javascript 将JS消息循环链接到HTML头

ttisahbt  于 2023-02-18  发布在  Java
关注(0)|答案(2)|浏览(138)

我一直在试着做一个每小时变化的消息循环(一次只能看到一条消息)我对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>
juud5qan

juud5qan1#

1.不要在标题中 Package 标题
1.看起来你需要一个Array的消息。我在下面向你展示如何做这样的事情
1.如果元素已存在于页面上,则不需要使用appendChild

  1. 3,600,000不是有效的毫秒。请使用360000060*60*1000
    在下面的代码中,我使用eventListener等待执行,直到页面上的html元素可用
    语句(counter++)%len将从0开始,并使用remainder运算符%在消息数组长度处换行。
    =>是一个生成构造的Arrow_functions
const functionName (parameter) => { };

在功能上等同于(还有一些其他内容)

function functionName(parameter) { };

如果您需要每小时更改2000到3600000
一个二个一个一个

4smxwvx5

4smxwvx52#

如果您想在消息之间有不同的时间间隔,请使用此解决方案,但如果您可以使用相同的重复间隔,则上面的解决方案更像是“最佳实践”。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <h3 id="Message"></h3>
    <script>
        var h3elem = document.getElementById('Message');
        h3elem.innerHTML = "Starting text"
        function myLoop() {
            let messages = ['Message 1', 'Message 2', 'Message 3', 'Message 4', 'Message 5', 'Message 6'];
            let timeouts = [1000, 2000, 3000, 5000, 6000, 7000];
            for (let i = 0; i< messages.length; i++) {
                setTimeout(() => {
                    h3elem.innerHTML = messages[i]
                    console.log("timeout", i)
                }, timeouts[i])
      
            }
        }
        myLoop();
    </script>
</body>

</html>

顺便说一句,在调查这一点时,我跪了下来,当发现它将与let i = 0一起工作,而不会与var i = 0一起工作时。

相关问题