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

问题描述

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)

    }

解决方案

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

时间: 2024-08-30 05:19:32

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

js 轮播-一个js轮播器,可以用用但是性能差

问题描述 一个js轮播器,可以用用但是性能差 html------------------------ <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="style/main.cs

在JS中a标签加入单击事件屏蔽href跳转页面_javascript技巧

我们常用的在a标签中有点击事件: 1. a href="JavaScript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href里面执行javascript语句 2. a href="javascript:void(0);"

JS中mouseover和mouseout多次触发问题如何解决_javascript技巧

问题描述 我希望当鼠标移动到id1上的时候,id2显示,当鼠标离开id1的时候,id2显示.问题如下: 1.当鼠标从id1上移动到id2上的时候,id由有显示变为不显示,然后变为显示 2.当鼠标从id2上移动到id1上的时候, id2有显示变为不显示,然后变为显示 我希望的是当鼠标在id1或者id2上移动的时候,id2一直显示,不发生变化. <script type="text/javascript" src="https://code.jquery.com/jquer

webview-H5本身点击事件没有问题 可是用Android的WebView加载后 就失效了

问题描述 H5本身点击事件没有问题 可是用Android的WebView加载后 就失效了 java代码 WVH5.getSettings().setJavaScriptEnabled(true); WVH5.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); WVH5.requestFocus(); H5代码: $(document).on("pageinit","#test",function

js实现一个轮播效果示例

轮播这种组件是大部分网站都会存在的了,绝大部分都是 js 来实现逻辑控制的,它的原理就不多阐述了,因为我们现在要做的是不用 js 来实现一个轮播组件! 前提是只兼容现代浏览器. 原理 这里我们主要用的原理: CSS3 element+element 选择器(相邻兄弟选择器),element+element 选择器用于选取第一个指定的元素之后(不是内部)紧跟的元素. CSS3 element1~element2 选择器,element1~element2 选择 element1 之后出现的所有 e

JS中批量给元素绑定事件过程中的相关问题使用闭包解决_jquery

在JS中,你写一个for循环的时候,内部的循环变量I其实是会保存在它运行的函数或类内的,所以你会发现你给元素批量绑定事件的时候,出现i=最后一个循环变量的值,这就很坑爹啊,解决的方案有2钟, 思路就是:把这个循环变量保存起来,不要让它的作用域在整个函数,而是在循环体内 1.使用闭包(如果你不懂闭包,请打开百度:www.baidu.com) 2.使用with关键字,with语法是with( obj ) { //使得可以在此直接访问obj的属性,而不用加obj.XXX } 代码示例: 复制代码 代码

从零开始学_JavaScript_系列(八)——js系列&amp;lt;2&amp;gt;(事件触发顺序、文本读取、js编写ajax、输入验证、下拉菜单)

(20)事件触发的顺序 假如文档中有多个脚本(例如自动执行的脚本),那么他们执行是有一定的顺序的(在HTML文档之中): ①先执行<head>内的<script>标签.因此,这里的js脚本通常是嵌入代码.指向JS文件,可以在这里定义其后要使用的函数: ②其次是执行<body>内的script标签: ③然后是执行触发的脚本内容,例如在button按钮上添加的onclick=""命令,就是在点击后触发的. (21)文档对象模型(DOM) 文档对象模型(D

Js中的onblur和onfocus事件应用介绍_基础知识

html页面中,诸如按钮.文本框等可视元素都具有拥有和失去焦点的事件,这些事件在响应鼠标或键盘动作时都可激发预设的操作.本文以文本框获得和失去焦点为例简单讲解onfocus和onblur的应用. 一. onfocus(获得焦点事件) 当一个文本框获得焦点时,它里面的文本就像"好123"网站上的百度搜索输入框那样全部被自动选中,这样的操作可以利用onfocus来实现. 以下的文本框,当鼠标指针移过去时,里面的文字全部被选中: 请输入网址 这是怎么做的呢?看以下代码及解释: <inp

Ember.js中实现像jQuery ready 事件的方法

jQuery 下,要在 DOM 准备就绪后绑定事件,可以写在 ready1 里:  代码如下 复制代码 $( document ).ready(function() {   // 事件绑定代码写在这里 }); 但 Ember.js 里我们不那么写,因为 jQuery 定义的 ready 触发时,也许 Ember.js 视图还没渲染完成,那个时候要给元素绑定事件,元素可能还不存在:你可能考虑用事件委托,但其实不必,因为 Ember.js 提供了一个更方便的事件:didInsertElement2.