定期间隔后更改文本

时间:2015-02-21 16:21:12

标签: javascript

我想编写一个占用段落的代码,段落的内容会以一定的间隔(例如5秒)更改。内容应该每隔5秒交替一次。使用javascript.here是我的尝试。

<html>
<script>
    i = 0;

    function changeText(txt) {
            var s = txt;
            document.body.innerHTML.change = document.body.innerHTML.replace(s, Mudit ");
                replaceorig(txt); i++;
                if (i % 2 == 0) setTimeOut(function() {
                    changeText();
                }, 500);
            }

            function replaceorig(txt) {
                document.body.innerHTML.change = txt;
            }
</script>

<body onload="changeText('My name is Mudit')" ;>
    <p id="change">My name is Mudit</p>
</body>

</html>

2 个答案:

答案 0 :(得分:0)

i = 0;

function changeText(txt) {
    var s = txt;
    document.body.getElementById("change").innerHTML = document.body.getElementById("change").innerHTML.replace(s, "Mudit");
    replaceorig(txt);
    i++;
    if (i % 2 == 0) setTimeOut(function() {
        changeText();
    }, 5000);
}

function replaceorig(txt) {
    document.body.getElementById("change").innerHTML = txt;
}

这修复了代码中的所有错误:

  • document.body.innerHTML.change不是解决p元素的正确方法。
  • 500为500毫秒或半秒,因此您需要5000
  • Mudit未在替换功能中正确引用。

我仍然无法解决一些问题,因为我不知道你想做什么:

  • document.body.getElementById("change").innerHTML = document.body.getElementById("change").innerHTML.replace(s, "Mudit");此行将替换名称为Mudit的文字,但会被replaceorig(txt);
  • 立即覆盖
  • 五秒后changeText通过setTimeout调用,但不提供参数。因此,p-element将每5秒设置为undefined

答案 1 :(得分:0)

这对我有用,我创建了一个函数,它包含一个应该修改文本的元素,应该连续使用的文本和以毫秒为单位的时间:

function changeText(element, texts, time) {

  var text = texts.splice(0, 1) [0];
  if (text) {
    element.innerHTML = text;
    setTimeout(function () {
      changeText(element, texts, time);
    }, time);
  }

}

var element = document.body.getElementById("change");
var texts = [
  'My name is Mudit',
  'my name is joe',
  'my name is johnson',
  'my name is jack'
];
var time = 5000;

changeText(element, texts, time);