Door
Sander Zijnstra
op 28-10-2012 22:45
gewijzigd op 28-10-2012 22:46
1.797 views
Ik heb een kalender in een xml bestand. Nu zou ik graag de eerste 3 volgende activiteiten op mijn hoofdpagina willen laten zien. Dit moet dus elke dag veranderen naar de 3 volgende activiteiten. Weet iemand een script waarmee ik dit kan bereiken?
Ja klopt dat bedoel ik. Maanden zou evt ook handig zijn, maar laten we in eerste instantie van dagen uitgaan. Ik realiseer me dat een database handiger is, maar gezoen mijn kennis daarover en de grootte van de kalender gaat er dan nog erg veel tijd inzitten.
<!DOCTYPE html>
<html>
<body>
<div>
<script>
// functie voor het ophalen van een xml-bestand.
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","note.xml",false);
xmlhttp.send();
// het xml-bestand wordt opgeslagen in xmlDoc.
xmlDoc=xmlhttp.responseXML;
var datum = new Date(); //datum van vandaag
var dagen = datum.getDate(); // dag van de maand
var arr = xmlDoc.getElementsByTagName("day"); // sla alle elementen met een <day> tag op in een array
// deze functie probeert een string te pakken die tussen de tags staan zoals <label>rommelmarkt</label>
function getTagContent(element, tag) {
var arr = element.getElementsByTagName(tag);
if(arr.length)
return arr[0].childNodes[0].nodeValue;
return '-niet gevonden-';
}
// loop om alle dagen van deze maand door te lopen tot en met vandaag
for(var dag = 1; dag <= dagen ; dag++ ) {
document.write('dag: ' + dag + '</br>'); // print de dag
for(var j = 0; j < arr.length ; j++ ) { // loop die door alle <day>-tag elementen loopt
if(arr[j].getAttribute("value") == dag) { // als <day value="X"> gelijk is aan de dag die we zoeken
document.write('label: ' + getTagContent(arr[j], 'label')+'</br>'); //print de label
document.write('description: ' + getTagContent(arr[j], 'description')+'</br>'); // print de beschrijving
}
}
}
</script>
</div>
</body>
</html>
Goed hier loopt ie dan door de dagen. Begrijp goed dat getElementsByTagName('day') een array geeft met alle <day> elementen, meestal meer dan één dus.