javascript函数调用后打印'undefined'

时间:2010-12-04 21:21:25

标签: javascript xml

我的脚本正在从XML文件加载一些数据并用它打印一个表。

    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>");
}

如果我从HTML文件调用该函数(单独的文件),它会打印该表,然后打印'undefined'。如果我在HTML中嵌入脚本,它会打印表而不打印'undefined'。我无法弄清楚为什么在单独的文件中使用脚本会改变其行为。我希望有一个比我更有智慧的人来解释。谢谢!

2 个答案:

答案 0 :(得分:1)

在你的document.write内:

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
        }
    }
}

答案 1 :(得分:1)

draw_schedule()不返回任何值(undefined)。您可能正在使用document.write调用该函数:

document.write(draw_schedule());
在这种情况下,

draw_schedule()会返回undefined,结果如下所示:

document.write(undefined);