循环内的onclick值仅适用于表中的最后一个值

时间:2019-06-06 20:17:27

标签: javascript

我是Java的新手。我正在尝试创建一个单位换算计算器。我想遍历一个表x并添加一个onclick,该onclick输出 clicked 按钮的值。

我已经能够返回正在遍历的NodeList。之后,我添加一个onclick。每次单击按钮都会输出列表中最后一个按钮的值。

var x = document.getElementsByName("Scalar")

var out = document.getElementById("output")

function Edit(Input){
    out.innerHTML = Input;
}

var i;
for (i = 0; i < x.length; i++) {
    out.innerHTML = out.innerHTML + x[i].name;
    var b = x[i];
    b.onclick = function() {
        Edit(out.innerHTML + b.value)
    }
    
}
<input type = "button" id="Scalar" value = "K" name = "Scalar"/>

<div id="output">

</div>

如果我单击任何按钮,我的输出将是 列表中最后一个按钮的值(DDDDDD)

1 个答案:

答案 0 :(得分:0)

变量b被覆盖,因为它在同一代码块中。 要获得正确的值,请使用this.value而不是b.value。 避免在循环内创建函数,覆盖变量。 使用addeventlistener代替onclick。     var x = document.getElementsByName(“ Scalar”)

var out = document.getElementById("output")

function Edit(){
    out.innerHTML = this.value
 }

for (i = 0; i < x.length; i++) {

   x[i].addEventListener( 'click' , Edit );

 }