qq_31877191 2015-12-05 01:02 采纳率: 0%
浏览 8184

js中怎么让点击事件触发前移除定时器,等点击完后再继续执行,我做的是一个轮播器

 window.onload=function()
{
    var oPicList=document.getElementById("picList");
    var oCss=document.getElementById("css");
    var aBtns=document.getElementById("btns").getElementsByTagName("li");
    var aLi=null;
    var sLi="";
    var sCss="";
    var iLiw=300;
    var iZindex=0;
    var iLength=oPicList.clientWidth/iLiw;
    var iNow=0;
    var iLB=0;
    var c=1;
    for(var i=0;i<iLength;i++)
    {
        i>iLength/2?iZindex--:iZindex++;
        sLi+='<li><a href="#"></a><a href="#"></a><a href="#"></a><a href="#"></a><span></span><span></span></li>';
        sCss+="#picList li:nth-of-type("+(i+1)+") a{background-position:-"+i*iLiw+"px 0;}";
        sCss+="#picList li:nth-of-type("+(i+1)+"){z-index:"+iZindex+"}";
    }
    oPicList.innerHTML=sLi;
    oCss.innerHTML+=sCss;
    aLi=oPicList.children;
    for(var i=0;i<aBtns.length;i++){
        (function(a){
            aBtns[a].onclick=function()
            {   
                clearInterval(LB);
                for(var i=0;i<aLi.length;i++)
                {
                    <!-->aLi[i].style.transition="1.5s "+i*200+"ms";
                    aLi[i].style.WebkitTransform="rotateX(-"+a*90+"deg)";
                }       
                this.className="active";
                aBtns[iNow].className="";
                iNow=a;
            };
        })(i)

    }



        function scroll(){

        //自调用函数,相当于一个函数表达式,立即执行函数
        (function(b){

                    for(var i=0;i<aLi.length;i++)
                    {
                        <!-->aLi[i].style.transition="0.5s "+i*100+"ms";
                        aLi[i].style.WebkitTransform="rotateX(-"+b*90+"deg)";
                    }       
                    this.className="active";

        })(c);


        c++;
    }
    var LB=setInterval(scroll,2000);
};

这是大概的代码,问题主要出在这,我下面继续重新定义个定时器也无效求怎么放这个重新定义的定时器;
    for(var i=0;i<aBtns.length;i++){
        (function(a){
            aBtns[a].onclick=function()
            {   
                clearInterval(LB);
                for(var i=0;i<aLi.length;i++)
                {
                    <!-->aLi[i].style.transition="1.5s "+i*200+"ms";
                    aLi[i].style.WebkitTransform="rotateX(-"+a*90+"deg)";
                }       
                this.className="active";
                aBtns[iNow].className="";
                iNow=a;
            };
            LB=setInterval(scroll,2000);
        })(i)

    }
  • 写回答

3条回答 默认 最新

  • Royal_lr 2015-12-05 04:42
    关注

    可以设一个boolean变量,,点击时设为false,,否则设为tue

    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64