2011-12-29 98 views
0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script type="text/javascript"> 
<!-- 

function init() 
{ 
    timeDisplay = document.createTextNode (""); 
    document.getElementById("clock").appendChild (timeDisplay); 
} 

function updateClock() 
{ 
    var currentTime = new Date(); 

    var currentHours = currentTime.getHours(); 
    var currentMinutes = currentTime.getMinutes(); 
    var currentSeconds = currentTime.getSeconds(); 

    // Adds zeros if required 
    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes; 
    currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds; 

    // Decides whether AM or PM 
    var timeOfDay = (currentHours < 12) ? "AM" : "PM"; 

    // Convert the hours component to 12-hour format if needed 
    currentHours = (currentHours > 12) ? currentHours - 12 : currentHours; 

    // Convert an hours component of "0" to "12" 
    currentHours = (currentHours == 0) ? 12 : currentHours; 

    // Creates the display string 
    var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay; 

    // Updates the time display 
    document.getElementById("clock").firstChild.nodeValue = currentTimeString; 
} 

// --> 
</script> 
<link rel="stylesheet" type="text/css" href="week9live.css" /> 
</head> 

<body onload="updateClock(); setInterval('updateClock()', 1000)"> 
<h1>A live clock in Javascript</h1> 
<div> 
    <p>The time according to your pc is </p> <span id="clock">&nbsp;</span> 
</div> 
</br> 
<button type ="button" onclick = "clearInterval('updateClock()')">Stop Clock</button> 
<button type="button" onclick="setInterval('updateClock()', 1000)">Start Clock</button> 
</body> 
</html> 

我有这很多我用来生成活动时钟的HTML。然后我的任务是创建两个按钮,一个停止时钟,然后一秒钟重新启动它。我的setInterval函数工作正常,但我不能为我的生活找出为什么clearInterval函数不起作用。有任何想法吗?问题与我的clearInterval函数

干杯

+3

'clearInterval'预计到'setInterval'返回的ID。总是值得阅读一些文档,而不是假设事情是如何工作的:https://developer.mozilla.org/en/DOM/window.clearInterval – 2011-12-29 15:50:20

回答

3

您需要保存这setInterval返回的价值,并通过到您的来电clearInterval

var idForClear = setInterval(updateClock, 1000); 

然后

clearInterval(idForClear); 

如果沟内联DOM 0级处理器和做这样的事情

<button id="stopBtn" type ="button">Stop Clock</button> 
<button id="startBtn" type="button">Start Clock</button> 

var idForClear; 
document.getElementById("startBtn").onclick = function() { 
    idForClear = setInterval(updateClock, 1000); 
}; 
document.getElementById("stopBtn").onclick = function() { 
    clearInterval(idForClear); 
}; 

只要确保你把这个脚本这将是一个容易得多在您页面正文的底部处,确保document.getElementById在您准备好dom之前不会被调用。


而且,它通常被认为是邪恶的调用setTimeoutsetInterval一个字符串。如果你不是一个内嵌处理器,而不是此

setInterval('updateClock()', 1000); 

你想要在功能

setInterval(function() { updateClock(); }, 1000); 

但当然updateClock的传递是一个函数,也使以上是更嘈杂相当于

setInterval(updateClock, 1000); 
+0

感谢帮助队友。我已将您提供的代码添加到页面正文的底部,但该按钮仍然不起作用。我的网页上的哪些代码需要删除或更改?当谈到Javascript时,它并不是最热门的:P – user1121477 2011-12-29 16:30:18

+0

@ user1121477 - 我将通过启动和停止按钮执行一个setInterval来开始调试,该setInterval只是执行一个console.log - 然后检查它的chrome控制台是否正常工作。然后慢慢加入你的所有时钟的东西。 – 2011-12-29 16:32:28

0

clearInterval该函数应该接收由setInterval产生的ID。喜欢的东西:在clearInterval 的setInterval的

var theid = setInterval('updateClock()', 1000); 
clearInterval(theid);