我创建了一个从0到24计数的计数器,当它到达24时:
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 = ???;
}
但我不知道下一步是什么。
我希望你能引导我朝着正确的方向前进。
答案 0 :(得分:2)
试试这个
var time = setInterval(TimeNumber, 1000);
var iState = 1;
function TimeNumber() {
iState++;
document.getElementById("time").innerHTML = iState;
if (iState == 24) iState = 0;
}
<强> Demo 强>
答案 1 :(得分:2)
function TimeNumber()
{
if (iState == 24){
iState = 0;
}
iState++;
document.getElementById("time").innerHTML = iState.toString();
}
答案 2 :(得分:2)
试一试:
var time = setInterval(function(){TimeNumber();},1000);
var iState = 1;
function TimeNumber()
{
document.getElementById("time").innerHTML = iState;
iState++;
if (iState === 25) {
iState = 1;
}
}
答案 3 :(得分:1)
setInterval(function() {
$('#time').text(function(_,txt) {
var n = parseInt(txt,10);
return n>=24?0:n+1;
});
},1000);
或没有jQuery:
setInterval(function() {
var el = document.getElementById('time'),
n = parseInt(el.innerHTML,10);
el.innerHTML = (n>=24?0:n+1);
},300);
答案 4 :(得分:0)
另一种选择
HTML
<div id="time"></div>
的Javascript
var dayAndNight = (function () {
var iState = 1,
timeDiv = document.getElementById("time"),
countNode;
return function () {
var textNode = document.createTextNode(iState);
if (!countNode) {
countNode = timeDiv.appendChild(textNode);
} else {
timeDiv.replaceChild(textNode, countNode);
countNode = textNode;
}
iState += 1;
if (iState > 24) {
iState = 1;
}
};
}()),
intervalId = setInterval(dayAndNight, 1000);
这个解决方案有一些优点,因为iState
现在包含在一个闭包中,并且不会在以后的脚本中意外修改。 (接受的答案使用本地全局,可以在以后更改,如果设置大于25,那么由于===
检查,计数永远不会被重置)
此解决方案也不会破坏名为time
的元素的内容(接受的答案使用innerHTML
),并且只更新它自己的节点。因此,您可以愉快地添加或删除time
元素中的内容。
此解决方案还会缓存id为time
的元素,因此每次更新时都不会在DOM中查找它。
innerHTML
也不起作用,此解决方案将会。 (你没有指明你的元素是什么,但我猜你不是最初使用innerHTML
的表格。
任何未存储setInterval
ID的答案都无法在以后的clearInterval
脚本中停止。
答案 5 :(得分:0)
所有这些答案,并没有模数除法。这是我的2美分。
var time = setInterval(TimeNumber, 1000);
var iState = 1;
function TimeNumber() {
document.getElementById("time").innerHTML = iState;
iState = (iState % 24) + 1;
}