有哪位大哥玩过在xsl中写js,js中取xml中的值求救!!!var Arrive = '<xsl:value-of select="A/B['+i+']/@C"/>';i是个已经定义的变量,我希望通过i的改变取到不同的B元素的C属性值,但是这样写得到的都是同一个值,即第一个<B>的@C该怎么样改才能取到正确的值??100分在线等,秒回!!!!!xslxmljs

解决方案 »

  1.   

    初学者常见问题了,用闭包保护变量值就行了(function(i){
     ....事件函数在这里面赋值
    })(i);自己试一下,写不好的话把完整代码贴出来
      

  2.   


    function showInfoByPage(pindex,psize){
        for(var i=1; 10>=i; i++) {
    var Arrive = '<xsl:value-of select="Routes/Route['+i+']/@Arrive"/>';
            alert(Arrive );
        }
    }
    只是部分js代码,主要就是这个地方卡壳了。
    pindex,psize在这段代码里头暂未用到。
      

  3.   

    你这儿可不是问题所在,这儿的i值是实时的,alert时肯定i是不一致的,你得把出问题的代码搞清楚
      

  4.   


    不是alert问题,我循环取到这个值,然后将该值在页面上显示出来,结果显示的都是一样的结果。
      

  5.   


    function showInfoByPage(pindex,psize){
        var str='';
        var ResultNum = '<xsl:value-of select="count(Routes/Route)"/>';
        var pageShow = psize;
        var liShow = 9;
        var currentPage = pindex;
        var maxPage = Math.ceil(ResultNum/pageShow);
        pageShow = (pageShow>ResultNum)?ResultNum:pageShow;
        var startRow=(currentPage-1)*pageShow+1;
        var j = 1;
        var endRow = (currentPage-1)*pageShow+1+pageShow;
        if(endRow>=ResultNum)
            endRow = ResultNum;

        for(var i=startRow; ResultNum+1>=i; i++,j++) {

            if(i>=startRow) {
                if(endRow>i) {
    var Arrive = '<xsl:value-of select="A/B['+i+']/@Arrive"/>';
    var Depart = '<xsl:value-of select="A/B['+i+']/@Depart"/>';

    str += '<label class="city-pair"><a target="_blank" href="'+hreflink+'">'+Depart+'-'+Arrive+'</a></label>';

        }
            }
    if(10>j) {
        document.getElementById("ContainerLi_1").innerHTML=str;
    }

    if(j>9) {
        if(18>=j) {
    document.getElementById("ContainerLi_2").innerHTML=str;
        }
    }
    if(j>18) { 
        if(27>=j) {
    document.getElementById("ContainerLi_3").innerHTML=str;
        }
    }

    if(j%9==0) str='';
        }
        var pageStr="";
        if(currentPage>=1) {
    if(currentPage==1) {
        pageStr += '<input id="nextbtn" class="btn_next" type="button" value="下一页" onclick="showInfoByPage('+(currentPage+1)+','+pageShow+')" style="visibility: visible;"/>';
    }
    else if(maxPage>currentPage) {
    pageStr += '<input id="prebtn" class="btn_prev" type="button" value="上一页" onclick="showInfoByPage('+(currentPage-1)+','+pageShow+')" style="visibility: visible;"/>';
    pageStr += '<input id="nextbtn" class="btn_next" type="button" value="下一页" onclick="showInfoByPage('+(currentPage+1)+','+pageShow+')" style="visibility: visible;"/>';

    }
    else {
    pageStr += '<input id="prebtn" class="btn_prev" type="button" value="上一页" onclick="showInfoByPage('+(currentPage-1)+','+pageShow+')" style="visibility: visible;"/>';
    }
    }
    document.getElementById("pagebtn").innerHTML=pageStr;

    }
    这是这个function的全部代码,各位高手给看一下啊!!!指点一下!!!
      

  6.   

    太多了,没怎么看,以下方法该可以解决 
    for(var i=startRow; ResultNum+1>=i; i++,j++)
    {
       (function(i){
          .../循环里面的所有代码放闭包内
       })(i);
    }