这样肯定不行啊,后面一次 str="0002"的语句把前面的str的0001值覆盖了,当然出来的都是0001了。你用两个变量分别存放0001和0002就可以了var   str1   =   "0001"; 
    var   td   =   document.createElement("td"); 
    td.onclick   =   function() 
    { 
            test(str1); 
                                    } 
                    td.appendChild(document.createTextNode(str1)); 
                    tr.appendChild(td); 
var    str2   =   "0002";                 
    td   =   document.createElement("td"); 
    td.onclick   =   function() 
    { 
            test(str2); 
                                    } 
                    td.appendChild(document.createTextNode(str2)); 
                    tr.appendChild(td); 
                } 

解决方案 »

  1.   

    的值被覆盖了阿。
    str="0002"是后复制的。
      

  2.   

    <script   type="text/javascript">
    function   test(a)
    {
        alert(a);
                                    }
                   
    function   eventTest()
    {    var   e   =   document.getElementById("test");    var   table   =   document.createElement("table");
        e.appendChild(table);
        var   tblBody   =   document.createElement("tbody");
        table.appendChild(tblBody);
        var   tr   =   document.createElement("tr");
        tblBody.appendChild(tr);
                                        var   str   =   "0001";
        var   td   =   document.createElement("td");
        td.onclick   =  function(i){return function (){test(i)}}(str);//利用闭包解决
                        td.appendChild(document.createTextNode(str));
                        tr.appendChild(td);
        str  =   "0002";                
        td   =   document.createElement("td");
        td.onclick   =  function(i){return function (){test(i)}}(str);

                        td.appendChild(document.createTextNode(str));
                        tr.appendChild(td);
                }
          window.onload   =   eventTest;
                   
    </script>
      

  3.   

    xiaolei1982:
    谢谢,确实解决了,可我还是不太理解。
    能不能给我解释一下这句话啊,谢谢。td.onclick   =  function(i){return function (){test(i)}}(str);//利用闭包解决
      

  4.   

    闭包问题不太容易说明白
    http://hi.baidu.com/xiaolei1982/blog/item/a941e43fcfa147c07c1e7165.html
    先给你偏文章你看看什么叫闭包,其中你就会明白你开始写的例子为什么会
    被覆盖,而上面的写法就是解决这种情况的方案
      

  5.   

    xiaolei1982: 
    谢谢,确实解决了,可我还是不太理解。 
    能不能给我解释一下这句话啊,谢谢。 td.onclick       =     function(i){return   function   (){test(i)}}(str);//利用闭包解决 --------
    js中的匿名函数就是用来解决这个问题的
    当然还可以这样
    td.onclick = function(){return text(str)};
      

  6.   


    !sorry
    this:
    td.onclick   =   function(){return   test(str)};
      

  7.   

    xiaolei1982 非常感谢
    解决了我的一个大难题,也是我对闭包有所了解。