【问题标题】:'undefined' printing after javascript function calljavascript函数调用后的“未定义”打印
【发布时间】:2011-05-20 08:17:32
【问题描述】:

我的脚本正在从一个 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 文件调用函数(单独的文件),它会打印表格,然后打印“未定义”。如果我将脚本嵌入到 HTML 中,它会打印表格而不打印“未定义”。我无法弄清楚为什么将脚本放在单独的文件中会改变其行为。我很想找一个比我解释得更有智慧的人。谢谢!

【问题讨论】:

  • 您完全确定使用document.write() 是您想要做的吗?出于很多原因,这是构建页面内容的一种非常不受欢迎的方式。

标签: javascript xml


【解决方案1】:

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

document.write(draw_schedule());

draw_schedule() 在这种情况下返回undefined,结果如下所示:

document.write(undefined);

【讨论】:

  • 谢谢,这很有帮助。我真的不知道为什么我用 document.write 调用这个函数。有时这些东西只需要另一双新鲜的眼睛!
  • 如果您的问题得到解答,请将答案标记为已接受。目前有206,491 questions with no accepted answers。这是一个相当大的列表:/
【解决方案2】:

在里面写你的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
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2020-06-05
    相关资源
    最近更新 更多