var times = this.aItems[numindex].Times;
var guid = this.aItems[numindex].GUID;
tb.rows[i].cells[n].innerText = this.aItems[numindex].Times;
tb.rows[i].cells[n].setAttribute("onclick", function() { tdOnclick(numindex.toString(), times.toString(), guid.toString()); });
function tdOnclick(index,times, guid) {
    window.alert(index+";"+times + ";" + guid);
}调试发现每个td里面的onclick属性都是
tdOnclick(numindex.toString(), times.toString(), guid.toString()); 
问题就是
onclick传进去的function直接把变量名传进去,而没有把变量的值传进去

解决方案 »

  1.   

    alert变量的值看看是否正确呢
      

  2.   

    设置td属性的代码是在整个table所有td循环中的
    times,guid都是局部变量且值都是有变的(调试过了)。但是每个td的onclick属性都变成
    tdOnclick(numindex.toString(), times.toString(), guid.toString()); 
    即直接把变量名传进去,而没有把变量的值传进去。这样当单击时得到的值自然就是变量最后赋值的值
    请问怎么把变量的值传进去。。而不是变量名
      

  3.   

    eval("function() { tdOnclick("+numindex.toString()+","+ times.toString()"+","+" guid.toString()); }")
      

  4.   

    eval("tb.rows[i].cells[n].setAttribute('onclick', function() { tdOnclick("+numindex.toString()+","+ times.toString()"+","+" guid.toString()); })");最好先把eval里的内容先alert一次看看有没语法错误.
    不然执行会有错的...
      

  5.   


        $("*", document.body).click(function (e) {
          e.stopPropagation();
          var domEl = $(this).get(0);
          $("#table_id > tr > td[id='first']").click(function($){
             
             tdOnclick(numindex.toString(), times.toString(), guid.toString());      });
        });