如何使用setInterval()来更改文本?

时间:2011-05-15 08:22:59

标签: javascript setinterval timing

我已经在这方面工作了很长一段时间。我正在尝试创建一个倒计时的简单计时器。我已经使alert()工作,但不幸的是textToChange没有改变。我在下面复制了我的代码副本。任何帮助将不胜感激!谢谢。

<script type="text/javascript">
    var timeLeft = 0;
    var changingTextElement;
    var changingText = new Array();
    var ctr = 0;

    function timeMsg(thing)
    {
    var length = thing.inputbox.value*1000;
    var t = setTimeout("alertMsg()",length);
    timeLeft = length/1000;
    initChangeText();
    }

    function alertMsg()
    {
    alert("Alert!");
    }

    function initChangeText(){
        changingTextElement = document.getElementById("textToChange");
        changingText[ctr] = changingTextElement.innerHTML;
        ctr++;
        while(timeLeft > 0){
            changingText[ctr] = timeLeft;
            timeLeft--;
            ctr++;
        }
        ctr = 0;    
        setInterval("changingText()",1000);
    }

    function changingText() {
        ctr++;
        if(ctr >= changingText.length){
            changingTextElement.innerHTML = 0;
        }
        else{
            changingTextElement.innerHTML = changingText[ctr];
        }
    }

</script>

3 个答案:

答案 0 :(得分:3)

您正在使用changingText函数和changingText数组...

看到冲突?


作为附加信息,

不要在setInterval方法中使用字符串作为名称函数。直接使用对方法的引用

setInterval(changingText, 1000);

答案 1 :(得分:1)

对于简单的倒数计时器,此代码太大了。基本上,你应该做的是:

  • 设置应倒数的秒数
  • 使用setInterval启动计时器,递减计数器并显示

这可以很简单:

var countFrom;
var timer;
function run_timer() {
    document.getElementById("textToChange").innerHTML = --countFrom;
    // !0 evaluates to true, if the counter reaches 0 (wait 0 seconds) ...
    if (!countFrom) {
        clearInterval(timer);
        alert("Timer finished!");
    }
}
function init_timer () {
    // stop previous timers if any
    clearInterval(timer);
    // start counting from 30 seconds
    countFrom = 30;
    timer = setInterval(run_timer, 1000);
}

答案 2 :(得分:0)

你的小提琴版。我更改了功能名称

http://jsfiddle.net/mplungjan/jqeDv/