Javascript 试图让单击的按钮显示它';s值属性

Javascript 试图让单击的按钮显示它';s值属性,javascript,Javascript,这是我的密码 for(var i = 0; i<tabs.length; i++) { alert(tabs[i].getAttribute('value')); tabs[i].onclick = function() { alert("clicked"); alert(tab[i].getAttribute('v

这是我的密码

for(var i = 0; i<tabs.length; i++)
        {
                alert(tabs[i].getAttribute('value'));
                tabs[i].onclick = function() {
                        alert("clicked");
                        alert(tab[i].getAttribute('value'));
                };
        }
for(var i=0;i您是否尝试过:

this.getAttribute('value') 
而不是

tab[i].getAttribute('value')?
tab[i].getAttribute('value')
您是否尝试过:

this.getAttribute('value') 
而不是

tab[i].getAttribute('value')?
tab[i].getAttribute('value')
我想你是说

tabs[i].getAttribute('value')
而不是

tab[i].getAttribute('value')?
tab[i].getAttribute('value')

无论哪种方式,这里的问题是i的值在触发单击事件之前很久就被更改了

最简单的解决方案是用
(函数(i){
&
})(i);

它的作用是创建i的新副本并将其传递给单击事件

这是你的代码。这是更改后的

更新代码:

for (var i = 0; i < tabs.length; i++) {
        alert(tabs[i].getAttribute('value'));
        (function (i) {
            tabs[i].onclick = function () {
                alert("clicked");
                alert(tabs[i].getAttribute('value'));
            }
        })(i);
    }
for(变量i=0;i
我想你是说

tabs[i].getAttribute('value')
而不是

tab[i].getAttribute('value')?
tab[i].getAttribute('value')

无论哪种方式,这里的问题是i的值在触发单击事件之前很久就被更改了

最简单的解决方案是用
(函数(i){
&
})(i);

它的作用是创建i的新副本并将其传递给单击事件

这是你的代码。这是更改后的

更新代码:

for (var i = 0; i < tabs.length; i++) {
        alert(tabs[i].getAttribute('value'));
        (function (i) {
            tabs[i].onclick = function () {
                alert("clicked");
                alert(tabs[i].getAttribute('value'));
            }
        })(i);
    }
for(变量i=0;i
您可以尝试使用此.getAttribute('value')而不是选项卡[i]。getAttribute('value'))?@GonzaloBahamondez就是这样做的。因此,在onclick函数中,“this”是被单击的元素?这表示回调函数中的元素,请阅读有关函数作用域的内容。@user3391564:
this
是指处理程序绑定到的元素。请阅读以了解有关事件处理的所有知识。请尝试使用this.getAttribute('value'),而不是制表符[i]。getAttribute('value'))?@GonzaloBahamondez成功了。因此,在onclick函数中,“this”是被单击的元素?这表示回调函数中的元素,请阅读有关函数作用域的内容。@user3391564:
是指处理程序绑定到的元素。请阅读以了解有关事件处理的所有知识。