在JavaScript中使用for循环的XML数据表

时间:2011-10-19 00:53:42

标签: javascript xml

大家好我试图在Javascript中使用FOR循环从脚本所在的外部XML文件给出的数据中填充表:

    <script type="text/javascript">



        var xmlDoc;

        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","data.xml",false);
            //xmlhttp.send();
            xmlDoc=xmlhttp.responseXML;



        var x=0;

    document.write("<table border='1'>");

    for (var i=0;i<x.numstudents;i++)
      { 

      x=xmlDoc.getElementsByTagName("students");
       var studentstr= "student_"+(i+1);
        stustr= x[i].getElementsByTagName(studentstr)[0].childNodes[0].nodeValue;
        document.write(x[i].getElementsByTagName(studentstr)[0].childNodes[0].nodeValue);

      sum=0;
      for (var j=0;j<numtests;j++)
      {
      var mystr= "test_"+(j+1);
                    document.write("<tr><td>");
      tststr= x[i].getElementsByTagName(mystr)[0].childNodes[0].nodeValue;
                        document.write(x[i].getElementsByTagName(mystr)[0].childNodes[0].nodeValue);

    } 
      }
    document.write("</table>");

        </script>

以下代码是XML代码中的学生之一:

<CATALOG>
        <numstudents>10</numstudents>       
        <numtests>7</numtests>          
 <students>
 <student_1>
            <name> B    </name>
    <test_1>2   </test_1>
    <test_2>2   </test_2>
    <test_3>2   </test_3>
    <test_4>2   </test_4>
    <test_5>2   </test_5>
    <test_6>2   </test_6>
    <test_7>2   </test_7>

</student_1>
</students>

</CATALOG>

我面临的问题是关于字符串以及如何将其放入表中。无论如何都可以建议解决这个问题。 注意:我正在尝试学习JavaScript,所以请帮助,不要混淆我。

1 个答案:

答案 0 :(得分:3)

我建议您尝试以下方法来调试代码:

1)检查XML文档是否实际加载到变量xmlDoc中。执行alert(xmlDoc)console.log(xmlDoc)。它的初始化没有显示在您给定的代码中。

2)其次,检查您是否已关闭所有括号。在代码第8行中,document.write()没有正确关闭。像这样的简单错误将导致整个脚本中断。要查看更多错误,请尝试使用浏览器控制台(在Chrome中 CTRL-SHIFT-J ,FF&amp; IE F12