【发布时间】:2019-10-15 20:51:03
【问题描述】:
我正在尝试向所有输入添加事件,从中获取值(数字)并将它们插入到 span 元素中。
这是我的 JavaScript 代码。我不知道如何传递变量。
var input_selector = document.querySelectorAll('.coins_n'); // input number elements
var price_selector = document.querySelectorAll('.price'); // span elements
for(var i = 0; i <= input_selector.length; i++) {
var input = input_selector[i];
var price = price_selector[i];
input.addEventListener('input', function(){
console.log(price); // not working
console.log(input); // not working
price.innerHTML = input.value; // not working
})
}
【问题讨论】:
-
两件事:如果您希望您的输入对于循环的每次迭代都是唯一的,请使用
let将其限制在该块范围内(否则每个事件侦听器都会知道最后一个输入) .但是,您最好使用event.target.value并将名为event的参数添加到您的处理函数(又名addEventListener('click', function(event){})) -
那么你的代码有什么问题?会发生什么?
-
看看我放在addEventListener之后的console.log。控制台日志看不到变量。
-
用
let替换for(包括在声明中)中的var的每个实例并报告回来。var的作用域不同,因此会更改所有循环的值,而 let 仅在块中,因此稳定 在循环中。 -
好的。成功了,谢谢!但是我将如何使用 var 来做到这一点?有可能吗?我只是好奇。
标签: javascript variables addeventlistener innerhtml