以下是我的javascript代码。我试图让我的函数timedisplay()每秒触发一次。 但它并非如此。
function timedisplay() {
alert ("Welcome");
var pelement = document.getElementById("myclock");
var timeobj = new Date();
alert (timeobj);
pelement.innerHTML = timeobj.toLocaleTimeString();
alert (pelement.toLocaleTimeString());
settimeout (timedisplay,1000);
}

Timer Clock Testing..
<button onclick="timedisplay()">Click me</button>
<p id="myclock"></p>
&#13;
问题是什么?
答案 0 :(得分:5)
您可以考虑调用setInterval
函数而不是setTimeout
,而您只需要调用一次。虽然技术上允许setInterval
进入你的回调,但最好把它放在一个单独的函数中,如下所示:
/* the callback */
function refreshTime() {
var pelement = document.getElementById("myclock");
var timeobj = new Date();
pelement.innerHTML = timeobj.toLocaleTimeString();
}
/* start the clock */
function timedisplay() {
setInterval( refreshTime, 1000 );
}
答案 1 :(得分:2)
pelement元素没有toLocaleTimeString()函数,它引用元素myclock
settimeout应该去setTimeout
否则你的javascript很好:
alert (pelement.toLocaleTimeString());
function timedisplay()
{
//alert ("Welcome");
var pelement = document.getElementById("myclock");
var timeobj = new Date();
//alert (timeobj);
pelement.innerHTML = timeobj.toLocaleTimeString();
//alert (pelement.toLocaleTimeString());
setTimeout (timedisplay,1000);
}
Timer Cock Testing..
<button onclick="timedisplay()">Click me</button>
<p id="myclock">
</p>
答案 2 :(得分:1)
对于初学者来说,它是setTimeout
,而不是settimeout
- 资本化很重要。
其次,不要用递归来做;你几乎没有理由想要这样的递归超时。要重复此操作,请改用setInterval
,并将其放在正文或其他函数中。
那就是说,如果你在setTimeout
中修正错字,那么你的代码看起来还不错。