alert不出来内容。

<ul>

<li>click me</li>

<li>click me</li>

<li>click me</li>

<li>click me</li>

<li>click me</li>

</ul>

<script>

varelements=document.getElementsByTagName('li');

varlength=elements.length;

for(vari=0;i<length;i++){

elements[i].οnclick = function(){

alert(i);

    }

}

</script>

请问各位大神,
1. alert(i);为什么打印不出来内容呢?
2.我希望的结果是,每次点击li,都可以得到对应li的index值,麻烦各位大神帮忙改下。

阅读 2.5k
2 个回答

不服不行。肉眼真看不出来区别,楼主你是怎么做到的?
image.png

第2个问题是很普遍的闭包问题,把var换成let即可。

for (let i = 0; i < length; i++) {  
    elements[i].onclick = function () {  
        alert(i);  
    }  
}

或者

 for (var i = 0; i < length; i++) {
        elements[i].onclick   = (function (i) {
            return function () {
                alert(i);
            };
        })(i);
    }

把script放在body后面,然后同上个回答闭包问题,建议用let

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏