Mr.Daru 2018-02-08 06:39 采纳率: 76.5%
浏览 3489
已采纳

html通过js绑定click事件,无限调用。

问题1.
如题,通过js绑定click事件,无限调用。
js 结构

window.onload = function(){
    basecss();
    bdEvent()
    function bdEvent(){
    var li=document.querySelectorAll("#slider li");
    li[0].addEventListener("click", before(),true); 
    li[1].addEventListener("click", before(),true); 
    li[3].addEventListener("click", before(),true);
    li[4].addEventListener("click", before(),true);
    }
    function basecss(){
        ...
    };
    function before(){
        ...
    };
    function next(){
        ...
    };
}

html结构

 <body>
    <div id="slider">
        <ul>
            <li>
                <img src="1517301943(1).jpg">
                <a>0000</a>
            </li>
            <li>
                <img src="1.jpg">
                <a>0000</a>
            </li>
            <li>
                <img src="1.jpg">
                <a>0000</a>
            </li>
            <li>
                <img src="1.jpg">
                <a>0000</a>
            </li>
            <li>
                <img src="1.jpg">
                <a>0000</a>
            </li>
        </ul>
        </div>
</body>

问题2.
定义一个变量,然后写一个函数不能调用?我调用a是undefine

 window.onload = function(){
    basecss();
    bdEvent();
    var a="aaa";
    function bdEvent(){
    alert(a);
    }
  • 写回答

11条回答 默认 最新

  • Go 旅城通票 2018-02-08 06:58
    关注

    事件绑定错了,去掉(),加()是将before返回值作为click的处理函数,至于无限调用自己检查逻辑,肯定是有死循环代码了

     li[0].addEventListener("click", before(),true); 
    ==>
    li[0].addEventListener("click", before,true); 
    

    var申明的变量不管你在哪里var,预解析,会在作用域最先申明并赋值为undefined,只有执行到实际的赋值语句才会赋值,所以undefined没错,等价于下面的

      window.onload = function () {
            var a = undefined;////////////////
            basecss();
            bdEvent();//执行alert a,所以undefined,也不会报错
             a = "aaa";//执行到这才会赋值
            function bdEvent() {
                alert(a);
            }
        }
    

    =>javascript运行机制浅析

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料