需要更改.innerHTML的按钮,但它们是在循环中制作的,因此它们最终具有相同的ID

时间:2013-06-12 15:12:07

标签: javascript html loops button

我正在javascript中为xml文件编写一个表树,我需要每个按钮。单击此按钮时,需要将其文本从“ - ”更改为“+”,反之亦然。我通常知道以下代码可以工作;

function change()
{
    if(document.getElementsById("myButton").innerHTML == "-"){
        document.getElementById("myButton").innerHTML = "+";
    }
    else{
        document.getElementById("myButton").innerHTML = "-";
    }
}

我不能仅仅使用它的原因是因为按钮是在循环中创建的,所以它们都具有相同的Id。

如果您可以帮助我这样做,那么每次按钮生成时它的Id都会附加一个递增的数字,或者有另一种方法来执行上面的代码,这将有所帮助。

2 个答案:

答案 0 :(得分:1)

当您循环创建每个按钮时,创建一个计数器变量,或使用for循环中的变量,每个循环将其递增1并将其附加到ID。

for(var i = 0; i < some_number; i++){
  var ID = "myButton"+i;
  //Other code
}

答案 1 :(得分:1)

根本不需要使用ID;而是传递元素以作为change函数的参数进行修改。该功能现在看起来像这样:

function change(element)
{
    if(element.innerHTML == "-"){
        element.innerHTML = "+";
    }
    else{
        element.innerHTML = "-";
    }
}

然后,当您创建按钮时,onclick属性将如下所示:

onclick="change(this);"