JavaScript中只能有一个超时
Can there only be one timeout in JavaScript?
此代码似乎不起作用。。。很长一段时间后,它只显示twCharCount元素一次。可能只有一个超时设置吗?有什么建议可以让这个代码变得更好?谢谢你的建议。。。
var timer = new Array();
var t=0;
var step=1000;
counter.hide();
var t =+ step;
timer[0] = setTimeout("$('#twCharCount').show()",t);
var t =+ step;
timer[1] = setTimeout("$('#twCharCount').hide()",t);
var t =+ step;
timer[2] = setTimeout("$('#twCharCount').show()",t);
var t =+ step;
timer[3] = setTimeout("$('#twCharCount').hide()",t);
var t =+ step;
timer[4] = setTimeout("$('#twCharCount').show()",t);
好的。。对不起。。。写这篇文章的时候我有点不清醒。。。当然,我一直在重新定义。。。这就是为什么所有的执行都很缓慢。。。
var intervalId = window.setInterval(function() {
$('#twCharCount').toggle();
}, 1000);
并且停止闪烁CCD_ 1。
可能只是一些语法问题:
var timer = [];
var t=0;
var step=1000;
counter.hide();
t += step;
timer[0] = setTimeout("$('#twCharCount').show()", t);
t += step;
timer[1] = setTimeout("$('#twCharCount').hide()", t);
t += step;
timer[2] = setTimeout("$('#twCharCount').show()", t);
t += step;
timer[3] = setTimeout("$('#twCharCount').hide()", t);
t += step;
timer[4] = setTimeout("$('#twCharCount').show()", t);
t =+step;
应为t += step;
你不应该一次又一次地重新申报。
代码在很多方面都是错误的:(.
所有函数都在同一时间被调用,因为它们的时间(t(是相同的。
如果您想增加t
,您可能不应该在每个访问上声明它(只使用var t = ...
一次;之后您可以使用它的名称:t = ...
来访问它(,您可能应该使用+=
而不是=+
:a += b
是window.clearInterval(intervalId);
0的快捷方式,而a =+ b
是a = parseInt(b)
的快捷方式
你可能想写:
var timer = [];
var t=0;
var step=1000;
counter.hide();
t += step;
timer[0] = setTimeout("$('#twCharCount').show()", t);
t += step;
timer[1] = setTimeout("$('#twCharCount').hide()", t);
t += step;
timer[2] = setTimeout("$('#twCharCount').show()", t);
t += step;
timer[3] = setTimeout("$('#twCharCount').hide()", t);
t += step;
timer[4] = setTimeout("$('#twCharCount').show()", t);
还有一点,传递一个函数比传递字符串作为setTimeout
函数的第一个参数要好:
setTimeout(function(){$('#twCharCount').show();},t);
Sry,但我忍不住了,这是为你优化的代码:
var timer = [],
step = 1000,
n = 4,
el = $('#twChartCount');
for(var i=0;i<n;i++)
if(i%2)
timer[i] = setTimeout(function(){el.hide();},i*step);
else
timer[i] = setTimeout(function(){el.show()},i*step);
活动超时的数量实际上没有限制。
我看不出你的代码有任何真正的问题。可能问题不在于超时,而在于您正在执行的命令。
附加说明(与您的问题无关,但值得一提(:
- 每个函数只需要一次变量的"var"语句
- 在这种情况下,我会使用timer.push((而不是timer[…]
- 可以使用单个setInterval((
var show = false;
window.setInterval(function() {
if(show)
{
show = false;
$('#twCharCount').show();
}
else
{
show = true;
$('#twCharCount').hide();
}
}, 1000);
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 让谷歌数据图表有一个24小时x轴
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- Regex或javascript每X个连续单词中有一个单词
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 是否有一个javascript库来解析简单的查询
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 检查一个元素是否有一个类与另一个类总是返回true
- 我有一个用幻灯片制作的网页,但幻灯片会在屏幕上移动
- 我制作html网站的一小部分——我有一个javascript部分
- Javascript动态表,每个单元格都有一个onmouse事件
- JavaScript中只能有一个超时