Javascript 从1计数到24,然后重新启动
我创建了一个计数器,计数范围从0到24,当它达到24时:Javascript 从1计数到24,然后重新启动,javascript,jquery,html,Javascript,Jquery,Html,我创建了一个计数器,计数范围从0到24,当它达到24时: setInterval(function(){DayAndNight()}, 1000); var iState = 12; function DayAndNight() { //console.log('test'); switch(iState) { case 1: { doc
setInterval(function(){DayAndNight()}, 1000);
var iState = 12;
function DayAndNight()
{
//console.log('test');
switch(iState)
{
case 1:
{
document.getElementById("time").innerHTML = "1";
iState++;
break;
}
case 2:
{
document.getElementById("time").innerHTML = "2";
iState++;
break;
}
case 3:
{
document.getElementById("time").innerHTML = "3";
iState++;
break;
}
一直到24点,我回到iState1:
case 24:
{
document.getElementById("time").innerHTML = "24";
iState = 1;
break;
}
这工作得很好,我可以将它设置为从iState 12开始,所以它不只是从0到24计数
然而,我想知道是否有更简单的方法来完成这项任务?这是一个简单函数的大量代码。我尝试过这样的东西:
var time = setInterval(function(){TimeNumber();},1000);
function TimeNumber()
{
for (var i=0;i<23;i++)
document.getElementById("time").innerHTML = ???;
}
var time=setInterval(函数(){TimeNumber();},1000);
函数TimeNumber()
{
对于(var i=0;i
或者不使用jQuery:
setInterval(function() {
var el = document.getElementById('time'),
n = parseInt(el.innerHTML,10);
el.innerHTML = (n>=24?0:n+1);
},300);
或者不使用jQuery:
setInterval(function() {
var el = document.getElementById('time'),
n = parseInt(el.innerHTML,10);
el.innerHTML = (n>=24?0:n+1);
},300);
试试这个
var time = setInterval(TimeNumber, 1000);
var iState = 1;
function TimeNumber() {
iState++;
document.getElementById("time").innerHTML = iState;
if (iState == 24) iState = 0;
}
试试这个
var time = setInterval(TimeNumber, 1000);
var iState = 1;
function TimeNumber() {
iState++;
document.getElementById("time").innerHTML = iState;
if (iState == 24) iState = 0;
}
试一试:
var time = setInterval(function(){TimeNumber();},1000);
var iState = 1;
function TimeNumber()
{
document.getElementById("time").innerHTML = iState;
iState++;
if (iState === 25) {
iState = 1;
}
}
试一试:
var time = setInterval(function(){TimeNumber();},1000);
var iState = 1;
function TimeNumber()
{
document.getElementById("time").innerHTML = iState;
iState++;
if (iState === 25) {
iState = 1;
}
}
另一种选择
HTML
此解决方案有一些优点,因为iState
现在包含在一个闭包中,以后不会在脚本中意外修改。(接受的答案使用一个本地全局值,可以稍后更改,如果设置为大于25,则计数将永远不会重置,因为=
检查)
此解决方案也不会破坏名为time
的元素的内容(接受的答案使用innerHTML
),只更新它自己的节点。因此,您可以愉快地从time
元素添加或删除内容
此解决方案还缓存id为time
的元素,因此不会在每次更新时在DOM中查找该元素
innerHTML
在更新表(即和Konquer)时也不起作用,此解决方案将起作用。(您尚未指定元素是什么,但我猜它不是您最初使用的innerHTML
)
任何不存储setInterval
id的答案都不能稍后在脚本中使用clearInterval
另一个选项停止
HTML
此解决方案有一些优点,因为iState
现在包含在一个闭包中,以后不会在脚本中意外修改。(接受的答案使用一个本地全局值,可以稍后更改,如果设置为大于25,则计数将永远不会重置,因为=
检查)
此解决方案也不会破坏名为time
的元素的内容(接受的答案使用innerHTML
),只更新它自己的节点。因此,您可以愉快地从time
元素添加或删除内容
此解决方案还缓存id为time
的元素,因此不会在每次更新时在DOM中查找该元素
innerHTML
在更新表(即和Konquer)时也不起作用,此解决方案将起作用。(您尚未指定元素是什么,但我猜它不是您最初使用的innerHTML
)
任何不存储setInterval
id的答案都不能在以后的脚本中使用clearInterval
停止所有这些答案,并且没有模数除法。这是我的2美分
var time = setInterval(TimeNumber, 1000);
var iState = 1;
function TimeNumber() {
document.getElementById("time").innerHTML = iState;
iState = (iState % 24) + 1;
}
所有这些答案,没有模数除法。这是我的2美分
var time = setInterval(TimeNumber, 1000);
var iState = 1;
function TimeNumber() {
document.getElementById("time").innerHTML = iState;
iState = (iState % 24) + 1;
}
var time=setInterval(TimeNumber,1000);
更干净。是的,删除switch语句并使用innerHTML=iState
而不是数字,然后使用if语句重置为0(如果是24)。有24个做同样事情的开关盒有点多余。只需使用模(%)运算符。继续递增计数器,但显示(计数器%24)。var time=setInterval(TimeNumber,1000);
更干净。是的,删除switch语句并使用innerHTML=iState
而不是数字,然后使用if语句在24时重置为0。有24个开关盒做同样的事情有点多余。只需使用modulo(%)运算符。继续增加计数器,但显示(计数器%24).OP实际上已将规范更改为1到24 OP实际上已将规范更改为1到24