Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中重置延迟?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jQuery中重置延迟?

Javascript 如何在jQuery中重置延迟?,javascript,jquery,Javascript,Jquery,我在做老虎机,我想在有人点击添加或删除时显示行 减去一行。我使用以下代码;问题是,当某人快速点击(比延迟时间快)时,会产生比预期更大的延迟。这是一个演示(和) 函数箭头编号(id、最小值、最大值、差值){ 如果((最小值==未定义)| |(最小值min){ if(parseInt(差)>=parseInt(n)) n=最小值; 其他的 n=parseInt(n)-parseInt(差); showNumber(n); 如果(id=='line') 展示线(n); } }); 单击(函数())

我在做老虎机,我想在有人点击添加或删除时显示行 减去一行。我使用以下代码;问题是,当某人快速点击(比延迟时间快)时,会产生比预期更大的延迟。这是一个演示(和)

函数箭头编号(id、最小值、最大值、差值){
如果((最小值==未定义)| |(最小值<0)){
最小值=1;
}
如果((差异==未定义)){
差异=1;
}
var-previousArrow=$('.+id+'.previous');
var nextArrow=$('.+id+'.next');
变量ScreenNumber=$('.'.+id+'span');
var actualNumber=$('.'.+id+'span').text();
var n=实际数量;
上一个箭头。单击(函数(){
如果(n>min){
if(parseInt(差)>=parseInt(n))
n=最小值;
其他的
n=parseInt(n)-parseInt(差);
showNumber(n);
如果(id=='line')
展示线(n);
}
});
单击(函数()){
if(nmax)
n=最大值;
其他的
n=parseInt(n)+parseInt(差);
showNumber(n);
如果(id=='line')
展示线(n);
}
});
函数showNumber(n){
屏幕编号。文本(n);
}
}
功能显示行(行){
var容器='行';
var t=1000;
交换机(线路){
案例20:$('.+容器+'.l.l-20')。显示(0)。延迟(t)。隐藏(0);
案例19:$('.+容器+'.l.l-19').show(0).delay(t).hide(0);
案例18:$('.'容器+'.l.l-18').show(0).delay(t).hide(0);
案例17:$('.+容器+'.l.l-17').show(0)、delay(t)、hide(0);
案例16:$('.+容器+'.l.l-16').show(0)、delay(t)、hide(0);
案例15:$('.+容器+'.l.l-15').show(0)、delay(t)、hide(0);
案例14:$('.+容器+'.l.l-14').show(0)、delay(t)、hide(0);
案例13:$('.+容器+'.l.l-13').show(0)、delay(t)、hide(0);
案例12:$('.+容器+'.l.l-12').show(0)、delay(t)、hide(0);
案例11:$('.+container+'.l.l-11').show(0)、delay(t)、hide(0);
案例10:$('.+容器+'.l.l-10').show(0)、delay(t)、hide(0);
案例9:$('.+container+'.l.l-9').show(0)、delay(t)、hide(0);
案例8:$('.+容器+'.l.l-8').show(0)、delay(t)、hide(0);
案例7:$('.+container+'.l.l-7').show(0)、delay(t)、hide(0);
案例6:$('.+容器+'.l.l-6').show(0)、delay(t)、hide(0);
案例5:$('.'容器+'.l.l-5').show(0)、delay(t)、hide(0);
案例4:$('.+容器+'.l.l-4').show(0)、delay(t)、hide(0);
案例3:$('.+container+'.l.l-3').show(0)、delay(t)、hide(0);
案例2:$('.+容器+'.l.l-2').show(0)、delay(t)、hide(0);
案例1:$('.+容器+'.l.l-1').show(0)、delay(t)、hide(0);
}
}
箭头编号(“线”,1,20)
.line{
宽度:500px;
高度:200px;
}
.lines>.l{宽度:50px;高度:50px;颜色:#fff;浮动:左;背景:#000;边距:10px 0;显示:无;}
.lines>.l:n子(2n){背景:rgba(0,0,0,5);}
/* */
.线路{
颜色:#fff;
字体大小:30px;
宽度:300px;
高度:100px;
}
.line>.previous、.line>.next{
宽度:100px;
身高:100%;
背景:蓝色;
浮动:左;
}
.line>span{
宽度:100px;
身高:100%;
背景:绿色;
浮动:左;
显示:块;
}

1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
20
之前
1.
下一个
try():

另一个选项是替换延迟,使用淡入/动画显示和隐藏,设置超时并简单地使用停止()和clearTimeout()

delay()
不能停止和启动。相反,使用setTimeout和clearTimeout

用以下内容替换showLines功能:

var line_timers = {};
function showLines(lines){
    var container = 'lines';
    var t = 1000;
    for(var i=1;i<=20;i++) {
        var selector = '.'+container+' .l.l-' + i;
      clearTimeout(line_timers[selector]);
      if(i<=lines){
        $(selector).show(0);
        line_timers[selector]=setTimeout((function(x){
            return function(){
            $(x).hide(0);
          }
        })(selector),t);
      } else {
        $(selector).hide(0);
      }
    }
}
var行_定时器={};
功能显示行(行){
var容器='行';
var t=1000;

对于(var i=1;我能添加一个JSFIDLE吗?这是因为
.delay()
事件在队列中彼此“堆叠”,并且不会在新调用时取消。请查看(可能重复)为了解决这个问题,@RejithRKrishnan对延迟表示抱歉,下面是他使用开关上的故障提示来显示第1行-第1行,虽然这可以用
解决,而(第--)行
@trex005啊,我没有注意到缺少的中断:)谢谢!谢谢@Alex,但也许我应该像你说的那样尝试使用淡入淡出/动画。这是使用dequeue()实现的:@arglab是的,那看起来不性感!在这里,它只是被替换到你的小提琴中:
var line_timers = {};
function showLines(lines){
    var container = 'lines';
    var t = 1000;
    for(var i=1;i<=20;i++) {
        var selector = '.'+container+' .l.l-' + i;
      clearTimeout(line_timers[selector]);
      if(i<=lines){
        $(selector).show(0);
        line_timers[selector]=setTimeout((function(x){
            return function(){
            $(x).hide(0);
          }
        })(selector),t);
      } else {
        $(selector).hide(0);
      }
    }
}