无法使用相同的类迭代元素列表

时间:2017-02-15 08:18:00

标签: javascript

var elems = document.getElementsByClassName('delButton');
    for(i=0; i<elems.length; i++){
        var attr = elems[i].getAttribute('data-rowid');
        elems[i].addEventListener('click',function(){
            console.log(attr);
        });
    }

当我单击任何按钮时,仅在控制台上输出最后一个元素(delButton)的data-rowid属性的值。如何打印与每个按钮关联的data-rowid值?

1 个答案:

答案 0 :(得分:4)

试试这个

var elems = document.getElementsByClassName('delButton');
    for(i=0; i<elems.length; i++){
        elems[i].addEventListener('click',function(){
            console.log(this.getAttribute('data-rowid'));
        });
    }

你没有得到预期的结果,因为闭包的范围是只评估最后一个attr。

在提议的解决方案中,您将从接收事件的元素中提取attr