假设我有几个textareas,我想为每个textarea添加事件监听器。当我在textarea中键入内容时,我需要控制其中键入的值。在添加事件监听器时,我无法弄清楚如何将“this”引用到循环中调用的每个textarea。下面的代码在浏览器控制台中导致“未定义”。也许你可以把它做好。申请帮助。非常感谢你。
window.addEventListener("load", function(){
var char_max_inputs = document.querySelectorAll('.char_max');
for (var i = 0; i < char_max_inputs.length; i++){
var max_char = char_max_inputs[i].getAttribute("max_char");
var counter_id = char_max_inputs[i].getAttribute("counter_id");
char_max_inputs[i].addEventListener("keyup", function(){count_char(counter_id, max_char);}, false);
}
});
function count_char(counter_id, max_char) {
console.log(this.value);
}
答案 0 :(得分:-1)
window.addEventListener("load", function() {
var char_max_inputs = document.querySelectorAll('.char_max');
for (var i = 0; i < char_max_inputs.length; i++) {
var max_char = char_max_inputs[i].getAttribute("max_char");
var counter_id = char_max_inputs[i].getAttribute("counter_id");
char_max_inputs[i].addEventListener("keyup", count_char.bind(char_max_inputs[i], counter_id, max_char), false);
}
});
function count_char(counter_id, max_char) {
console.log(this.value);
}
&#13;
<textarea class="char_max"></textarea>
<textarea class="char_max"></textarea>
<textarea class="char_max"></textarea>
&#13;
如果没有正确阅读,
this
在JavaScript中会非常混乱。理解它的一个很好的资源是here
<强>更新强>
正如评论中所指出的,使用call和bind的示例是不完整的。删除它。