设置表格数据的点击功能<td>与参数

Setting on click function in tabla data <td> with parameters

本文关键字:td 参数 功能 数据 表格 设置      更新时间:2023-09-26

我有这样的代码:

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),而不是发送适当的值。请帮助。

您的变量"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');
 }