搜尋

首頁  >  問答  >  主體

javascript - 為什麼setTimeout中s的第二個參數要設定成500毫秒

下面是簡單時間顯示程式碼:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>当前系统时间</title>
<link rel="stylesheet" href="style.css"  />
<script language="javascript" type="text/javascript">

  window.onload = function(){
    showTime();
  }
  function checkTime(i){  //补位处理
      return i < 10 ? "0" + i : i;



  }
  function showTime(){
    var now=new Date();
    var year=  now.getFullYear();
    var month=  now.getMonth() + 1;
    var day=  now.getDate();
    var h=  now.getHours();
    var m=  now.getMinutes();
    var s=  now.getSeconds();
    h=checkTime(h)
    m=checkTime(m)
    s=checkTime(s)

    var weekday=new Array(7)
    weekday[0]="星期日"
    weekday[1]="星期一"
    weekday[2]="星期二"
    weekday[3]="星期三"
    weekday[4]="星期四"
    weekday[5]="星期五"
    weekday[6]="星期六"

    document.getElementById("show").innerHTML= year+"年"+month+"月"+day+"日 "+  " " +h+":"+m+":"+s;
    t=setTimeout('showTime()',500)
  }

</script>
</head>
<body>
<p class="content1">
  <p id="show">显示时间的位置</p>
</p>
</body>
</html>

如果把setTimeout設定成1000會比實際時間慢一秒,這是為什麼呢?

高洛峰高洛峰2810 天前799

全部回覆(4)我來回復

  • 滿天的星座

    滿天的星座2017-06-14 10:53:04

    setTimeout(callback,time); 是指,callback回調執行結束並延遲time以後,在執行setTimeout();根據js單線程的特性,可能時間比timetime這裡,可能的原因,就是callback也要一定的執行時間吧,可以用chrome的Timeline查看一下;能力不足,看程式碼,感覺不存在多大問題;

    回覆
    0
  • 为情所困

    为情所困2017-06-14 10:53:04

    很簡單啊,setTimeout這個函數是指500(ms)即0.5秒時間過後在執行showTime函數。如果是1000的話,即1秒過後再執行showTime函數。 所有才會出現你說的這個問題(純個人理解^~^)。

    回覆
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-14 10:53:04

    不管showTime是延遲1000還是500,取得時間和更新DOM都是同時執行的,所以應該不會有延遲(除非你時間計算出錯了)。而我這裡測了下,也沒看到延遲。

    另外,為甚不用setInterval

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-14 10:53:04

    你先拿到這個時間的數據,然後在後一秒顯示,當然會慢一秒啊。

    回覆
    0
  • 取消回覆