var req; // This is run OnLoad function Init () { var select = document.getElementById ("ListSelecter"); select.onchange = UpdateBookList; } // This is run when ListSelector Changes function UpdateBookList () { var select = document.getElementById ("ListSelecter"); if (select.value != "") loadXMLDoc (select.value); } // Run When the XMLHttpRequest gets more data function processReqChange () { if (req.readyState == 4) { if (req.status == 200) { // add the data to the interface ReplaceBookList (req.responseXML); } else { alert ("there was a problem retrieving XML: " + req.statusText); } } } function ReplaceBookList (xml) { var BookList = document.getElementById ("BookList"); // clear list BookList.innerHTML = ""; var Titles = xml.getElementsByTagName ('Title'); var Authors = xml.getElementsByTagName ('Author'); for (var i = 0; i < Titles.length; i++) { var BookHTML = MakeBook (Titles[i].firstChild.nodeValue, Authors[i].firstChild.nodeValue); BookList.appendChild (BookHTML); } } function MakeBook (Title, Author) { var ListItem = document.createElement ("li"); ListItem.appendChild (document.createTextNode (Title + " by " + Author)); return ListItem; } // Apple XMLHttpRequest func function loadXMLDoc (url) { if (window.XMLHttpRequest) { req = new XMLHttpRequest (); req.onreadystatechange = processReqChange; req.open ("GET", url, true); req.send (null); } else if (window.ActiveXObject) { req = new ActiveXObject ("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open ("GET", url, true); req.send (); } } }