Javascript 通过循环添加事件侦听器后获取此节点值

Javascript 通过循环添加事件侦听器后获取此节点值,javascript,Javascript,假设我有几个textarea,我想将事件侦听器添加到每个textarea。当我在textarea中键入时,我需要控制台在其中键入的值。在添加事件侦听器时,我不知道如何将“this”引用到循环中调用的每个文本区域。下面的代码导致浏览器控制台中出现“未定义”。也许你可以把它弄对。感谢帮助。多谢各位 window.addEventListener("load", function(){ var char_max_inputs = document.querySelectorAll('.char

假设我有几个textarea,我想将事件侦听器添加到每个textarea。当我在textarea中键入时,我需要控制台在其中键入的值。在添加事件侦听器时,我不知道如何将“this”引用到循环中调用的每个文本区域。下面的代码导致浏览器控制台中出现“未定义”。也许你可以把它弄对。感谢帮助。多谢各位

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);
}
window.addEventListener(“加载”,函数(){
var char_max_inputs=document.queryselectoral('.char_max');
对于(变量i=0;i
您可以使用

window.addEventListener(“加载”,函数(){
var char_max_inputs=document.queryselectoral('.char_max');
对于(变量i=0;i


使用.call方法是最简单的方法。它起作用了。非常感谢你!我建议你使用第二种方法。这样,您就不必担心其他答案中提到的问题是的,我已经转向使用“bind”,使用“call”方法可能会导致一些错误的重复