第三题

作者: kafya | 来源:发表于2021-09-13 23:36 被阅读0次

请写出如下点击li的输出值,并用多种方法正确输出li里的数字

<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<script type="text/javascript">
  var list_li = document.getElementsByTagName("li");
  for(var i=0;i<list_li.length;i++){
    list_li[i].onclick = function(){
      console.log(i)
    }
  }
</script>
  • 闭包
for(var i=0;i<list_li.length;i++){
  list_li[i].addEventListener(
    'click',
    (function(i){
      return function(){alert(i+1);}
    })(i)
  )
}
  • 块级作用域和函数级作用域,ES5没有块级作用域,只有全局作用域和函数作用域,全局作用域就是最外层的作用域,可以用ES6的let解决问题
for(let i=0;i<list_li.length;i++){
  list_li[i].onclick=function(){
    console.log(i);
  }
}
  • 给HTML添加i属性,通过属性获取值
for(var i=0;i<list_li.length;i++){
  list_li[i].i = i;
  list_li[i].onclick = function(){
    console.log(this.i+1);
  }
}

相关文章

网友评论

      本文标题:第三题

      本文链接:https://www.haomeiwen.com/subject/bduqgltx.html