点击变量在循环遍历元素后保持不变

时间:2014-03-12 19:16:02

标签: javascript jquery html

这是一小段代码,但我无法让它发挥作用。 我有一个用javascript动态填充的菜单,我点击每个按钮添加一个eventlistener。 现在每个按钮都需要不同的功能,所以我循环使用它们

var list = $("a");
for (var i=0; i<list.length; i++) {
    $(list[i]).on("click",function(){alert(i);});
}

使用此代码,每个按钮都会给我一个警告,而不是1,2,3,... 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

使用each()代码:

var list = $("a");
list.each(function(index){
    $(this).on("click", function(){alert(index);});
});

DEMO

答案 1 :(得分:0)

i的值在循环中发生变化,但是在循环结束后,i的值为5.每当你调用警报时,它都在寻找变量i,其值现在为5.你需要存储为每件东西增加某个地方的价值。在这个例子中,我给每个按钮一个名为data-myvalue的HTML5数据属性。

for (var i=0;i<ins.length;i++){
    ins[i].setAttribute('data-myvalue',i);
    ins[i].addEventListener('click',
           function(){alert(this.getAttribute('data-myvalue'));});
}

jsfiddle

但您也可以将信息存储在javascript数组中。

答案 2 :(得分:0)

只要通过写入

使用onchange事件选择项目,html代码中的

就会调用函数favbrowser

<select id="myList" onchange="favBrowser()">
  <option></option>
</select>

然后在javascript中执行此操作以打印菜单项的名称

<script>
function favBrowser()
{
var mylist=document.getElementById("myList");
alert(mylist.options[mylist.selectedIndex].text);
}
</script>