在HTML头部连接JS消息循环
P粉731861241
P粉731861241 2023-09-05 10:55:30
[JavaScript讨论组]

我一直在尝试制作一个每小时更换的消息循环(一次只显示一个),我对HTML还可以,但对JS不太擅长。(消息应该放在h3标签中)

我试图将我的JS循环链接到HTML文本元素中,但失败了。

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();
<h3>
  <h3 id="Message"></h3>
</h3>

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>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号