扫码关注官方订阅号
现本人已有以下三种方法,可以解决,但还是希望有更多方法可以提供参考,望各位大神指教!
把for里面的var 换成let 就好了
for(let i = 0 ; i < aList.length ; ++ i){ aList[i].onclick = function(){ alert(i); } }
ES6大法好~
也可以这样子,用事件代理
let tagA = document.getElementsByTagName('a'); document.addEventListener('click', function(ev) { if (ev.target.tagName !== 'A') return; ev.preventDefault(); alert(Array.prototype.indexOf.call(tagA, ev.target)); });
提供一种吧,渲染链接的时候,给他一个编号,一般都是给data-这样,然后你单击链接的时候输出他的data-这种的自定义属性就可以了
let nodeList = document.getElementsByTagName('a'); for(let i=0;i<nodeList.length;i++){ nodeList[i] = onclick = function(){ alert(i); } }
对于我这种看到for语句就浑身不舒服的更喜欢这样做
Array.prototype.slice.call(document.getElementsByTagName('a')).forEach(function(ele,index){ ele.onclick = function(){ alert(index); } });
[...document.getElementsByTagName('a')].forEach(function(ele,index){ ele.onclick = function(){ alert(index); } });
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
把for里面的var 换成let 就好了
也可以这样子,用事件代理
提供一种吧,渲染链接的时候,给他一个编号,一般都是给data-这样,然后你单击链接的时候输出他的data-这种的自定义属性就可以了
对于我这种看到for语句就浑身不舒服的更喜欢这样做