[英]When changing html via element.innerHTML='text' it doesn't work
[英]Why element.innerHTML = string with date info doesn't work?
我遇到了setInterval()
這個問題:
var h1 = document.getElementById("demo");
function updateTime(d) {
h1.innerHTML = "numero del mese: " + d.getDate() +
"<br>numero della settimana: " + d.getDay() +
"<br>anno: " + d.getFullYear() +
"<br>mese: " + d.getMonth() +
"<br>ore: " + d.getHours() +
"<br>minuti: " + d.getMinutes() +
"<br>secondi: " + d.getSeconds();
}
setInterval(updateTime.bind(null, new Date()), 1000);
所有這些都可以正常運行,但是只能運行一次,然后什么也沒有。 為什么?
new Date()
創建一個Date對象, 該對象表示創建對象的時間
您只需調用一次,然后在顯示該時間( 不會改變 )的時間間隔內使用它。
如果要獲取當前時間,則需要在間隔上調用的函數內創建一個新的Date對象。
例如:
setInterval(function () { updateTime(new Date()); }, 1000);
新的Date對象創建一次,並且您在每個函數調用中都使用相同的對象。 因此,日期不會在每次通話時更改。
您需要在函數內部創建一個新的Date對象,以便每次調用該函數時都會創建該對象,因此會更新時間。
檢查以下代碼段:
var h1 = document.getElementById("demo"); function updateTime() { var d = new Date(); h1.innerHTML = "numero del mese: " + d.getDate() + "<br>numero della settimana: " + d.getDay() + "<br>anno: " + d.getFullYear() + "<br>mese: " + d.getMonth() + "<br>ore: " + d.getHours() + "<br>minuti: " + d.getMinutes() + "<br>secondi: " + d.getSeconds(); } setInterval(updateTime, 1000);
<div id="demo"></div>
那是因為您使用.bind(null, new Date())
。 因此,對於以后的每個呼叫,它都是與最初創建的日期相同的日期。 我建議在每個間隔中調用new Date()
以獲取當前時間。 見下文。
var h1 = document.getElementById("demo"); function updateTime() { let d = new Date(); h1.innerHTML = "numero del mese: " + d.getDate() + "<br>numero della settimana: " + d.getDay() + "<br>anno: " + d.getFullYear() + "<br>mese: " + d.getMonth() + "<br>ore: " + d.getHours() + "<br>minuti: " + d.getMinutes() + "<br>secondi: " + d.getSeconds(); } setInterval(updateTime, 1000);
<h1 id="demo"></h1>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.