
按钮点击后%ignore_a_1%访问元素index值失效问题
下面这段代码旨在实现按钮点击后,隐藏一个无序列表中的所有元素,并显示与被点击按钮相对应的列表元素。
- 1
- 2
- 3
- 4
- 5
- 6
然而,代码中却存在一个问题:按钮点击后,输出的index值始终为6,导致无法正确隐藏或显示对应的列表元素。
问题原因
问题产生于代码中的for循环:
小艺
华为公司推出的AI智能助手
549 查看详情
for (var i = 0; i < oinput.length; i++) { oinput[i].index = i; oinput[i].onclick = function() { ... }}
当此for循环执行时,它会为每个按钮元素分配一个index值。但是,当按钮被点击时,用于触发onclick事件处理程序的实际index值获取自循环的最后一次迭代。因此,对于所有按钮点击事件,index值都为6,这是循环的最后一次迭代的值。
解决方案
要解决这个问题,需要将index值分配到onclick事件处理程序函数中,而不是在for循环中分配:
for (var i = 0; i < oInput.length; i++) { (function(index) { oInput[i].onclick = function() { ... oLi[index].style.display = "none"; ... } })(i);}
通过改用闭包,每个按钮的onclick事件处理程序都会获得自己唯一的index值,从而可以正确隐藏或显示对应的列表元素。
以上就是按钮点击后JS访问元素index值失效问题:为什么循环中分配的index值在按钮点击事件中失效?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/797263.html
微信扫一扫
支付宝扫一扫