我想我一定会错过一些非常明显的东西。使用此代码,我想累加并触发计时器的后台更改。但是,它不会传递变量,每次计时器调用该函数时,它将传递一个未定义的变量。
值得注意:
看着安慰-没有错误
我知道可以说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/