javascript - 问一道前端面试题的多种解决办法
巴扎黑
巴扎黑 2017-04-10 18:02:21
[JavaScript讨论组]


现本人已有以下三种方法,可以解决,但还是希望有更多方法可以提供参考,望各位大神指教!

巴扎黑
巴扎黑

全部回复(4)
迷茫

把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);
    }
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号