这是我的代码
for(var i = 0; i<tabs.length; i++)
{
alert(tabs[i].getAttribute('value'));
tabs[i].onclick = function() {
alert("clicked");
alert(tab[i].getAttribute('value'));
};
}
这完全在window.onload函数中。第一个警报起作用,即在页面加载时警告每个输入元素的值。然后,当我单击其中一个按钮时,会提示“clicked”,但不会提示值属性。
假设我有三个选项卡,其值为“home”,“about”和“contact”。有没有办法在没有手动编写每个onclick方法的情况下访问(在这种情况下,只是警告)值(或任何其他)属性?
由于
答案 0 :(得分:2)
您是否尝试过:
this.getAttribute('value')
而不是
tab[i].getAttribute('value')?
答案 1 :(得分:2)
我认为你的意思是
tabs[i].getAttribute('value')
而不是
tab[i].getAttribute('value')
无论哪种方式,这里的问题是在触发点击事件之前, i 的值会发生很长的变化。
最简单的解决方案是使用(function (i) {
&amp; })(i);
这是作为 i 的新副本创建的&amp;传递给点击事件。
更新的代码:
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);
}