<script language="JavaScript">
function showtime () {
        var now = new Date();
        var hours = now.getHours();
 var minutes = now.getMinutes();
        var seconds = now.getSeconds()
        var timeValue = "" + ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
        timeValue += ((seconds < 10) ? ":0" : ":") + seconds
        timeValue += (hours >= 12) ? " P.M." : " A.M."
        document.all.item("aa").value = timeValue;
        timerID = setTimeout("showtime()",1000);
        timerRunning = true;
}
问题:timerID = setTimeout("showtime()",1000);是一个递归调用吗?
</script>

解决方案 »

  1.   

    window对象有两个主要的定时方法,分别是setTimeout 和 setInteval  他们的语法基本上相同,但是完成的功能取有区别。  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。  setInterval方法则是表示间隔一定时间反复执行某操作。  如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法:例如:tttt=setTimeout('northsnow()',1000);clearTimeout(tttt);或者:tttt=setInterval('northsnow()',1000);clearInteval(tttt);举一个例子: <div id="liujincai"></div>
    <input type="button" name="start" value="start" onclick='startShow();'>
    <input type="button" name="stop" value="stop" onclick="stop();">
    <script language="javascript">
       var intvalue=1;
       var timer2=null;
       function startShow()
       {
          liujincai.innerHTML=liujincai.innerHTML + "&nbsp;" + (intvalue ++).toString();
          timer2=window.setTimeout("startShow()",2000);
       }
       function stop()
       {
          window.clearTimeout(timer2);
       }
    </script>
    或者: <div id="liujincai"></div>
    <input type="button" name="start" value="start" onclick='timer2=window.setInterval("startShow()",2000);//startShow();'>
    <input type="button" name="stop" value="stop" onclick="stop();">
    <script language="javascript">
       var intvalue=1;
       var timer2=null;
       function startShow()
       {
          liujincai.innerHTML=liujincai.innerHTML + "&nbsp;" + (intvalue ++).toString();
       }
       function stop()
       {
          window.clearInterval(timer2);
       }
    </script>
      

  2.   

    setTimeout method
    Evaluates an expression after a specified number of milliseconds have elapsed. 语法
    timeoutID=setTimeout(expression, msec)
    timeoutID is an identifier that is used only to cancel the evaluation with the clearTimeout method. 
    expression is a string expression or a property of an existing object. 
    msec is a numeric value, numeric string, or a property of an existing object in millisecond units. 方法
    frame, window 描述
    The setTimeout method evaluates an expression after a specified amount of time. It does not evaluate the expression repeatedly. For example, if a setTimeout method specifies 5 seconds, the expression is evaluated after 5 seconds, not every 5 seconds. 例子
    Example 1. The following example displays an alert message 5 seconds (5,000 milliseconds) after the user clicks a button. If the user clicks the second button before the alert message is displayed, the timeout is canceled and the alert does not display. <SCRIPT LANGUAGE="JavaScript">
    function displayAlert() {
       alert("5 seconds have elapsed since the button was clicked.")
    }
    </SCRIPT>
    <BODY>
    <FORM>
    Click the button on the left for a reminder in 5 seconds; 
    click the button on the right to cancel the reminder before 
    it is displayed.
    <P>
    <INPUT TYPE="button" VALUE="5-second reminder"
       NAME="remind_button"
       onClick="timerID=setTimeout('displayAlert()',5000)">
    <INPUT TYPE="button" VALUE="Clear the 5-second reminder"
       NAME="remind_disable_button"
       onClick="clearTimeout(timerID)">
    </FORM>
    </BODY>Example 2. The following example displays the current time in a text object. The showtime() function, which is called recursively, uses the setTimeout method update the time every second. <HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var timerID = null
    var timerRunning = false
    function stopclock(){
        if(timerRunning)
            clearTimeout(timerID)
        timerRunning = false
    }
    function startclock(){
         // Make sure the clock is stopped
        stopclock()
        showtime()
    }
    function showtime(){
        var now = new Date()
        var hours = now.getHours()
        var minutes = now.getMinutes()
        var seconds = now.getSeconds()
        var timeValue = "" + ((hours > 12) ? hours - 12 : hours)
        timeValue  += ((minutes < 10) ? ":0" : ":") + minutes
        timeValue  += ((seconds < 10) ? ":0" : ":") + seconds
        timeValue  += (hours >= 12) ? " P.M." : " A.M."
        document.clock.face.value = timeValue 
        timerID = setTimeout("showtime()",1000)
        timerRunning = true
    }
    //-->
    </SCRIPT>
    </HEAD><BODY onLoad="startclock()">
    <FORM NAME="clock" onSubmit="0">
        <INPUT TYPE="text" NAME="face" SIZE=12 VALUE ="">
    </FORM>
    </BODY>相关
    clearTimeout method