2016-09-15 47 views
1

我有這樣的代碼:設置上點擊功能​​與參數

for (var i = 0; i < ArregloNombres.length; i++) { 
    var tr = document.createElement("tr"); 
    for (var j = 0; j < ArregloNombres[i].length; j++) { 
     var td = document.createElement("td"); 
     var text = document.createTextNode(ArregloNombres[i][j]); 
     td.appendChild(text); 

     tr.appendChild(td); 

    } 
    var Link = document.createElement("a"); 


    var textLink = document.createTextNode("Eliminar"); 


    Link.appendChild(textLink); 
    Link.onclick = function() { 
     eliminarImpuesto(i) 
    }; 


    var tdLink = document.createElement("td"); 

    tdLink.appendChild(Link); 

    tr.appendChild(tdLink); 

    tabla.appendChild(tr); 

} 

其中eliminarImpuesto(i)只是alert(i)。問題是我創建的每個鏈接都傳遞了相同的參數,並且它是數組內的值的數量。例如,我在數組中有兩個元素,然後表中的每個鏈接調用函數eliminarImpuesto(2),而不是發送正確的值。請幫忙。

回答

0

您的變量「i」似乎是全球性的。檢查下面的鏈接: http://www.w3schools.com/js/js_function_closures.asp

也許如果你給你的元素分配一個屬性,然後把它取回來,你可以解決它。

for(var i = 0; i<ArregloNombres.length ; i++){ 
    var tr = document.createElement("tr"); 
     for(var j = 0; j<ArregloNombres[i].length; j++) { 
        var td = document.createElement("td"); 
        var text = document.createTextNode(ArregloNombres[i][j]); 
        td.appendChild(text); 

        tr.appendChild(td); 

       } 
        var Link = document.createElement("a"); 


        var textLink = document.createTextNode("Eliminar"); 
         //HERE: passing the attribute to your element... 

         textLink.setAttribute('data-i',i); 

        Link.appendChild(textLink); 
        Link.onclick =function(){eliminarImpuesto(textLink)}; 


        var tdLink = document.createElement("td"); 

        tdLink.appendChild(Link); 

        tr.appendChild(tdLink); 

       tabla.appendChild(tr); 

       } 


      } 


function eliminarImpuesto(element) 
{ 
    //getting it back... 
    var i = element.getAttribute('data-i'); 
} 
+1

已經解決了它setn link.id =我然後在參數this.id –

+0

很高興知道你做到了! – danielarend