2010-12-04 12 views
1

Mein Skript lädt einige Daten aus einer XML-Datei und drucken eine Tabelle mit ihm.'undefined' Drucken nach JavaScript-Funktion Anruf

function draw_schedule() { 
    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","schedule.xml",false); 
    xmlhttp.send(); 
    xmlDoc=xmlhttp.responseXML; 

    document.write("<table width='100%' border='1'>"); 
    var x=xmlDoc.getElementsByTagName("day"); 
    for (i=0;i<x.length;i++) {// number of days 
     document.write("<tr><th colspan='2'>"); 
     document.write(x[i].getElementsByTagName("date")[0].childNodes[0].nodeValue);// the date for each day 
     document.write("</th></tr>"); 
     var y=x[i].getElementsByTagName("session");// daily sessions 
     for (j=0;j<y.length;j++) { 
      document.write("<tr><td>"); 
      document.write(x[i].getElementsByTagName("title")[j].childNodes[0].nodeValue); 
      document.write("</td><td>"); 
      document.write(x[i].getElementsByTagName("time")[j].childNodes[0].nodeValue); 
      document.write("</td></tr>"); 
    } 
    } 
    document.write("</table>"); 
} 

Wenn ich die Funktion (separate Datei) aus der HTML-Datei aufrufen, druckt er die Tabelle und danach druckt ‚undefined‘. Wenn ich das Skript alternativ in den HTML-Code einbette, druckt es die Tabelle, ohne 'undefined' zu drucken. Ich kann nicht herausfinden, warum das Skript in einer separaten Datei sein Verhalten ändern würde. Ich würde gerne jemanden mit mehr Weisheit als ich zu erklären. Vielen Dank!

+0

Sind Sie ganz sicher, dass mit 'document.write() 'Was willst du machen? Aus vielen Gründen ist das ein ziemlich unerwünschter Weg, um Seiteninhalte aufzubauen. – Pointy

Antwort

1

draw_schedule() gibt keinen Wert zurück (undefined). Sie anrufen möglicherweise die Funktion mit document.write:

document.write(draw_schedule()); 

draw_schedule() kehrt undefined in diesem Fall, und das Ergebnis würde wie folgt aussehen:

document.write(undefined); 
+0

Danke, das ist hilfreich. Ich weiß wirklich nicht, warum ich die Funktion mit document.write aufgerufen habe. Manchmal brauchen diese Dinge nur noch andere frische Augen! – steve

+0

Wenn Ihre Frage beantwortet wird, markieren Sie die Antwort als akzeptiert. Im Moment gibt es [206.491 Fragen ohne akzeptierte Antworten] (http://stackoverflow.com/unanswered). Das ist eine ziemlich große Liste: / – Lekensteyn

1

Sie Ihre document.write innerhalb dieser:

xmlhttp.open("GET", "schedule.xml", false); 
xmlhttp.onreadystatechange = function() { 
    if(xmlhttp.readyState == 4) { 
    if(xmlhttp.status == 200) { 
    var result = xmlhttp.responseXML; 
      // do your document.write 
     } 
    } 
} 
Verwandte Themen