javascript

Discussion in 'HTML & Website Design' started by noobi, Sep 30, 2008.

  1. #1
    I'm a bit rusty on javascript, so I'm hoping someone can help me out here. The following javascript is supposed to parse some xml and put it in the div "details", but nothing happens when I click the links :confused: (I know that returning false stops the browser following the link).

    The html:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>People at Clearleft</title>
    <!--<style type="text/css">
    @import url("clearleft.css");
    </style> -->
    <script type="text/javascript" src="script/fetchxml.js"></script>
    </head>
    <body>
    	<h1>People</h1>
        <ul>
        	<li><a href="files/andy.xml" onclick="grabFile(this.href); return false;">Andy</a></li>
            <li><a href="files/richard.xml" onclick="grabFile(this.href); return false;">Richard</a></li>
            <li><a href="files/jeremy.xml" onclick="grabFile(this.href); return false;">Jeremy</a></li>
        </ul>
        <div id="details">Details</div>
    </body>
    </html>
    
    
    HTML:
    The xml:
    
    <?xml version="1.0" encoding="utf-8"?>
    <person>
    	<name>Andy Budd</name>
    	<website>http://andybudd.com/</website>
    	<email>andy@clearleft.com</email>
    </person>
    
    Code (markup):
    The javascript:
    
    // JavaScript Document
    function getHTTPObject() {
    	var xhr = false;
    	if (window.XMLHttpRequest) {
    		xhr = new XMLHttpRequest();
    	} else if (window.ActiveXObject) {
    		try {
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch(e) {
    			try  {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch(e) {
    				xhr = false;
    			}
    		}
    	}
    	return xhr;
    	alert(xhr);
    }
    
    function grabFile(file) {
    	var request = getHTTPObject();
    	if (request) {
    		request.onreadystatechange = function() {
    			parseResponse(request);
    		};
    		request.open("GET", file, true);
    		request.send(null);
    	}
    }
    
    function parseResponse(request) {
    	if (request.readyState == 4) {
    		if (request.status == 200 || request.status == 304) {
    			var data = request.responseXML;
    			var name = data.getElementsbyTagName("name")[0].firstChild.nodeValue;
    			var website = data.getElementsbyTagName("website")[0].firstChild.nodeValue;
    			var email = data.getElementsbyTagName("email")[0].firstChild.nodeValue;
    			
    			var header = document.createElement("h2");
    			var mailto = document.createElement("a");
    			mailto.setAttribute("href", "mailto:"+email);
    			mailto.appendChild(text);
    			header.appendChild(mailto);
    			var link = document.createElement("a");
    			link.setAttribute("href",website);
    			var linktext = document.createTextNode(website);
    			link.appendChild(linktext);
    			
    			var details = document.getElementById("details");
    			while (details.hasChildNodes()) {
    				details.removeChild(details.lastChild);
    			}
    			details.appendChild(header);
    			details.appendChild(link);
    		}
    	}
    }
    
    Code (markup):
    Hoping someone can spot the bug.
    Thanks.
    Noobi
     
    noobi, Sep 30, 2008 IP