第一次发现js批量绑定事件,竟然会出问题。。。。

马老虎 2010-11-16 03:31:18

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script type="text/javascript">
window.onload = function()
{
var spans = document.getElementsByName("tst");
for(var i = 0;i<spans.length;i++)
{
var span = spans[i];
span.onclick =function(){alert(i)};
}
}
</script>

<BODY>
<input type="button" name="tst" />
<input type="button" name="tst" />
<input type="button" name="tst" />
</BODY>
</HTML>




求一种解决方式。
不使用jQuery插件。。。。。
...全文
134 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
马老虎 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lunasea0_0 的回复:]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<M……
[/Quote]

NN个熊,明白了!谢谢兄弟们!!
lunasea0_0 2010-11-16
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script type="text/javascript">
window.onload = function()
{
var spans = document.getElementsByName("tst");
for(var i = 0;i<spans.length;i++)
{
var span = spans[i];
(function(){
var ii = i;
span.onclick =function(){alert(ii.toString() + this.id)};
})();
}
}

function check()
{
var button1 = document.getElementById('test1');
var button2 = document.getElementById('test2');
var button3 = document.getElementById('test3');
alert(button1.onclick);
alert(button2.onclick);
alert(button3.onclick);

}
</script>

<BODY>
<input type="button" name="tst" id="test1" />
<input type="button" name="tst" id="test2" />
<input type="button" name="tst" id="test3" />
<br/>

<input type="button" name="check" onclick="javascript:check();"/>
</BODY>
</HTML>

闭包的原因
g_lbz 2010-11-16
  • 打赏
  • 举报
回复
楼主弹出的都是3逻辑上是正确的。绑定完了之后i的值已经是3了,所以执行的时候只可能会弹出三。
马老虎 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 mmm306306 的回复:]
HTML code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">……
[/Quote]

span.onclick =function(){alert(i)};
弹出的值 始终是 3,,,,

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧