簡體   English   中英

有人可以向我解釋這個JavaScript實時時鍾嗎?

[英]Can someone explain this JavaScript Real-time clock to me?

<html>
<head>
<script type="text/javascript">
function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
h=checkTime(h);
m=checkTime(m);
s=checkTime(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout('startTime()',500);
}

function checkTime(i)
{
if (i<10)
  {
  i="0" + i;
  }
return i;
}
</script>
</head>

<body onload="startTime()">
<div id="txt"></div>
</body>
</html>

我只是不太了解這兩行:

document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout('startTime()',500);

有人可以用語言解釋嗎? getElementById('txt'),innerHTML和setTimeout('startTime()',500)有什么作用?

請參閱文檔

  • getElementById獲取具有給定ID的HTML DOM元素
  • DOM元素的innerHTML屬性指定元素的HTML
  • setTimeout方法在指定的毫秒數后運行一個函數
    請注意,此代碼是非常糟糕的做法; 永遠不要將字符串傳遞給setTimeout
    它應該是setTimeout(startTime, 500) ,傳遞函數本身。
    您甚至可以傳遞匿名函數:

     setTimeout(function() { alert('Five seconds later...'); }, 5000); 

第一行獲取頁面上的id屬性為txt的元素(在本例中為<div> ),並將內容(innerHTML)設置為具有格式時間的字符串。

第二行在JavaScript中設置了一個計時器,以在500毫秒后再次調用同一函數。 本質上是下次更新時鍾。 請注意,這是每半秒一次。 它的值可能應該為1000。

如果查看HTML,則會看到<div id="txt"> getElementById('txt')方法完全像聽起來那樣,它獲取具有ID txt<div> innerHTML屬性將獲取<div>內部的內容,並使您也可以更改其中的內容。

setTimeout()是一種允許您延遲執行特定功能的方法。 它接受功能和時間(以毫秒為單位)。 在這種情況下,將在500毫秒后調用startTime()函數。 我的猜測是,它在那里允許整個DOM樹在運行功能之前加載。 我讀錯了代碼。 setTimeout()調用用於遞歸調用startTime()但會插入500ms的延遲,因此瀏覽器將不會凍結嘗試運行無限循環的過程。

可以為每個HTML元素分配一個id屬性,該屬性對其進行唯一定義。

編碼

document.getElementById('txt')

返回對DOM對象的引用,該引用代表ID為txt的某些HTML元素。

該對象的innerHTML屬性表示該元素內部的HTML。 如果您為該屬性分配一個字符串,則該字符串將替換以前的HTML

setTimeout函數設置超時,以便一旦提供的超時(以毫秒為單位)到期,它將執行提供的功能。

就你而言

 setTimeout('startTime()',500);

將在500毫秒內執行功能startTime

setTimeout返回一個標識,您可以使用該標識在以后取消請求。

您可以在MDN上找到有關getElementByIdsetTimeout的更多信息,也可以通過一些明智的Google搜索(或Binging或Lycosing或其他方式)找到更多信息

document.getElementById('txt')告訴瀏覽器您要操作ID為“ txt”的元素(在本例中為空div)。

.innerHTML部分意味着您只需要將div內部的HTML更改為下一個指定的特定值。

setTimeout('startTime()',500)用於在一定時間后執行函數。 第一個參數( startTime() )是要執行的函數,第二個參數( 500 )表示執行該函數之前要等待的毫秒數。 setTimeout調用它所在的函數時,這意味着頁面將每500毫秒(或指定的任何毫秒數)不斷循環該函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM