我想我一定会错过一些非常明显的东西。使用此代码,我想累加并触发计时器的后台更改。但是,它不会传递变量,每次计时器调用该函数时,它将传递一个未定义的变量。

值得注意:


看着安慰-没有错误
我知道可以说Jquery会更好,但是由于一些令人讨厌的遗留问题(这又是另一个问题),该站点无法使用jquery


代码

<script>
/* Get the body element */
var body = document.getElementsByTagName('body')[0];
/* Call the function */
changebackground();
/* Set the starting count */
var changecount = 1;
/* Change function */
function changebackground(changecount) {
    if(changecount=1){
        body.style.backgroundImage = 'url(/templates/images/background_1.jpg)';
        changecount = 2;
    }
    else if (changecount=2) {
        body.style.backgroundImage = 'url(/templates/images/background_2.jpg)';
        changecount = 3;
    }
    else {
        body.style.backgroundImage = 'url(/templates/images/background_3.jpg)';
        changecount = 1;
    }
setInterval(function(changecount){changebackground();},3000);
}
</script>

最佳答案

删除changecount作为changebackground()的参数。您将其作为全局变量使用,因此无需在参数列表中将其列出。

function changebackground() {
    ...
}


然后将setInterval调用更改为:

setInterval(changebackground, 3000);


并将调用移到changebackground()之外。您只需要调用一次setInverval(),而不必每次都调用changebackground()。

最后,使用==进行比较,而不是=

if (changecount == 1) {
    body.style.backgroundImage = 'url(/templates/images/background_1.jpg)';
    changecount = 2;
}
else if (changecount == 2) {
    body.style.backgroundImage = 'url(/templates/images/background_2.jpg)';
    changecount = 3;
}
else {
    body.style.backgroundImage = 'url(/templates/images/background_3.jpg)';
    changecount = 1;
}

关于javascript - JavaScript如果计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20658368/

10-08 20:46