第三题

作者: 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