<html>
<head>
<script type="text/javascript">
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","/example/xmle/cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 
x=xmlDoc.getElementsByTagName("CD");function displayCDInfo(i)
{
artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue);
country=(x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue);
company=(x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue);
price=(x[i].getElementsByTagName("PRICE")[0].childNodes[0].nodeValue);
txt="Artist: "+artist+"<br />Title: "+title+"<br />Year: "+year+"<br />Country: "+country+"<br />Company: "+company+"<br />Price: "+price  ;
document.getElementById("showCD").innerHTML=txt;
}
</script>
</head><body>
<div id='showCD'>点击某个 CD 就可显示专辑信息:</div><br />
<script type="text/javascript">
document.write("<table border='1'>");
for (var i=0;i<x.length;i++)
  { 
  document.write("<tr onclick='displayCDInfo(" + i + ")'>");
  document.write("<td>");
  document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
  document.write("</td></tr>");
  }
document.write("</table>");
</script></body>
</html>
菜鸟一个,希望高手帮帮忙,上述代码摘自W3Cschool上的xml专题中,但有一事不明,他是根据怎么执行displayCDInfo(i)的呢?

解决方案 »

  1.   

    for (var i=0;i<x.length;i++)
      { 
      document.write("<tr onclick='displayCDInfo(" + i + ")'>");
      document.write("<td>");
      document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
      document.write("</td><td>");
      document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
      document.write("</td></tr>");
      }
    document.write("</table>");
      

  2.   

    首先谢谢答复,我不是这个意思,整段代码执行后先显示所有cd目录,我的意思是显示目录后,点击某个 CD 就可显示专辑信息,这是怎么做到的,或则说是执行了哪段,应该觉得执行了displayCDInfo(i)才会显示cd专辑信息,但这是怎么触发和传递变量的呢?
      

  3.   

    大侠们,是不是上面问的问题太幼稚了,但就是无法正常理解啊,另外,为何我把上述程序和需要的xml文件都保存了,就是把 W3Cschool上的代码复制后保存成test.html文件,然后把对应的xml文件保存到相同的目录下,命名为cd_catalog.xml,为何运行test.html,没有报错,但就是不显示xml的内容呢?上述代码中的路径我也全部去掉了,以下这段是测试是成功的,难道是路径还是有问题?但我已放同一目录了啊?还有哪里不对,望指教啊,谢谢.<html>
    <body>
    <h1>W3School.com.cn Internal Note</h1>
    <p><b>To:</b> <span id="to"></span><br />
    <b>From:</b> <span id="from"></span><br />
    <b>Message:</b> <span id="message"></span></p><script>
    txt="<note>";
    txt=txt+"<to>George</to>";
    txt=txt+"<from>John</from>";
    txt=txt+"<heading>Reminder</heading>";
    txt=txt+"<body>Don't forget the meeting!</body>";
    txt=txt+"</note>";if (window.DOMParser)
      {
      parser=new DOMParser();
      xmlDoc=parser.parseFromString(txt,"text/xml");
      }
    else // Internet Explorer
      {
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async="false";
      xmlDoc.loadXML(txt);
      }document.getElementById("to").innerHTML=
    xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;document.getElementById("from").innerHTML=
    xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;document.getElementById("message").innerHTML=
    xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
    </script>
    </body>
    </html>
      

  4.   

    先声明啊,我真的是有点急功近利,但没有办法,要交差啊,谢谢各位.而且这代码放入dreamweaver8 出错
      

  5.   

    我把问题再重复一下,就是我要把W3CSCHOOL上的例题在本地执行,但碰到问题,问题就是把它上面的代码复制后保存,但不能得到应有的结果.我弄个更简单一点的<html>
    <body>
    <h1>W3School.com.cn Internal Note</h1>
    <p><b>To:</b> <span id="to"></span><br />
    <b>From:</b> <span id="from"></span><br />
    <b>Message:</b> <span id="message"></span><script type="text/javascript">
    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","note.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;document.getElementById("to").innerHTML=
    xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;document.getElementById("from").innerHTML=
    xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;document.getElementById("message").innerHTML=
    xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
    </script></body>
    </html>这段代码保存为test.html,加上以下note.xml文件<?xml version="1.0" encoding="ISO-8859-1" ?> 
    <!--   Copyright w3school.com.cn   --> 
    <note>
      <to>George</to> 
      <from>John</from> 
      <heading>Reminder</heading> 
      <body>Don't forget the meeting!</body> 
    </note>我都保存在同一个目录下了,但无法得到这样的结果
    W3School.com.cn Internal NoteTo: George
    From: John
    Message: Don't forget the meeting! 只能得到W3School.com.cn Internal NoteTo: 
    From: 
    Message:  就是取不到xml的内容,这是为何?路径问题吗?请教
      

  6.   

    插了其它话题了,原始的问题还是没有人回答我,<div id='showCD'>点击某个 CD 就可显示专辑信息,为何每次点cd就会触发displayCDInfo(i)的呢?网页是怎么知道我点了哪个cd的呢?以及怎么触发去执行displayCDInfo()函数的呢?可能我不能理解<div id='showCD'>这条代码和document.getElementById("showCD").innerHTML=txt之间的关系是如何联系的?
      

  7.   

    2天前我也看了W3School的那个例……跟楼主一样的问题 现在我多想了下document.write("<tr onclick='displayCDInfo(" + i + ")'>");这行代码就是你的答案onclick估计就是将你按的ID之类的值传给函数displayCDInfo(i)