在HTML頭部連接JS訊息循環
P粉731861241
P粉731861241 2023-09-05 10:55:30
0
1
520
<p>我一直在嘗試製作一個每小時更換的訊息循環(一次只顯示一個),我對HTML還可以,但對JS不太擅長。 (訊息應該放在h3標籤中)</p> <p>我試圖將我的JS循環連結到HTML文字元素中,但失敗了。 </p> <p> <pre class="brush:js;toolbar:false;">h3 = document.createElement("h3"); var messages = "Message 1", "Message 2", "Message 3", "Message 4", "Message 5", "Message 6"; var counter = 0; function myLoop() { setTimeout(myLoop, 3, 600, 000); document.getElementById("Message") document.body.appendChild(h3); } myLoop();</pre> <pre class="brush:html;toolbar:false;"><h3> <h3 id="Message"></h3> </h3></pre> </p>
P粉731861241
P粉731861241

全部回覆(1)
P粉239089443
  1. 不要將標題包裹在標題中
  2. 看起來你想要一個訊息數組。我在下面展示瞭如何創建這樣一個數組
  3. 當元素已經存在於頁面上時,就不需要使用appendChild
  4. 3,600,000不是有效的毫秒數。使用360000060*60*1000

在我的程式碼中,我使用eventListener來等待頁面上的html元素可用後再執行

語句(counter )%len將從0開始,使用餘數運算子%在訊息數組的長度處進行循環。它避免了if (counter=> length) counter = 0;

#=>是一個箭頭函數,建構如下

const functionName (parameter) => { };

在功能上等同於(還有一些其他的東西)

function functionName(parameter) { };

如果需要每小時執行一次,請將2000更改為3600000

const messages = ["Message 1", "Message 2", "Message 3", "Message 4", "Message 5", "Message 6"];
const len = messages.length;
let counter = 0;

window.addEventListener("DOMContentLoaded", () => { // 当页面加载完成且h3可用时
  const h3 = document.getElementById("Message");
  const myLoop = () => h3.textContent = messages[(counter++) % len]; // 循环并包装
  myLoop(); // 立即执行一次
  setInterval(myLoop, 2000); // 然后每2秒执行一次
});
<div>
  <h3 id="Message"></h3>
</div>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板