yishuixs 2015-07-18 17:09 采纳率: 100%
浏览 1536
已采纳

ajax学习的一点小问题

在xml文件里我编辑了不少CD便签,如下

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v2007 (http://www.altova.com) -->
<CATALOG>
    <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
    </CD>
    <CD>
        <TITLE>Hide your heart</TITLE>
        <ARTIST>Bonnie Tyler</ARTIST>
        <COUNTRY>UK</COUNTRY>
        <COMPANY>CBS Records</COMPANY>
        <PRICE>9.90</PRICE>
        <YEAR>1988</YEAR>
    </CD>
    <CD>
        <TITLE>Unchain my heart</TITLE>
        <ARTIST>Joe Cocker</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>EMI</COMPANY>
        <PRICE>8.20</PRICE>
        <YEAR>1987</YEAR>
    </CD>
</CATALOG>

在html里用循环点击表格显示某行详细时显示错误,除非将调用_displayCDInfor()函数里的参数设置为"+i+"才可以正常显示,全部代码如下

 <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ajax</title>
</head>
<body onload="_displayCD()">
<script>
    if(window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    }else{
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.open('GET','cd_catalog.xml',false);
    xmlhttp.send();
    var xmlDoc = xmlhttp.responseXML;

    var 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>
<div id="showCD"></div>
<script>
    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>

请问为何要将< tr >标签里_dispalyCDInfo()函数的参数设置为"+i+",设置成i反而不正确?

  • 写回答

2条回答 默认 最新

  • danielinbiti 2015-07-18 17:13
    关注
     document.write("<tr onclick='_displayCDInfo("+i+")'>");
     这么写,如果i等于0就是
     document.write("<tr onclick='_displayCDInfo(0)'>");
     等于1就是
     document.write("<tr onclick='_displayCDInfo(1)'>");
     如果直接写i
     document.write("<tr onclick='_displayCDInfo(i)'>");,这么i就是字符i,和循环中i的值没有任何关系。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题