JS:我可以在通过setInterval()调用的函数()中增加一个var吗?

时间:2017-01-12 01:39:10

标签: javascript

我有一个函数change_background(),我从document.onload通过setInterval( change_background(), 5000 );来调用我的标题背景每隔5秒改变一次。

在我写作的时候,我的功能是: 如何在每次调用时增加num var?

function change_background(){

  var element = document.getElementsByClassName('top');
  element[0].style.backgroundImage = 'url( "media/image' + num + '.jpg" )';

 //when num gets greater than the amount of images
 if( num > 2 ){
   num = 0;
 }

}//end change_background()

我只是在努力实现这种效果。这甚至可能是我做这件事的方式,我对此采取了错误的方式吗?

4 个答案:

答案 0 :(得分:1)

试试这个:

var num = 0; // declaration
function change_background(){

  var element = document.getElementsByClassName('top');
  element[0].style.backgroundImage = 'url( "media/image' + num + '.jpg" )';
  num++;
  //when num gets greater than the amount of images
  if( num > 2 ){
    num = 0;
  }

}//end change_background()

答案 1 :(得分:0)

呀。有可能的。你可以让它增加你的数量。

echo Did You Enjoy?
echo 1. YES!!
echo 2. Not at all :(

set /p enjoy=Your answer here (1-2):
if %enjoy%=1 goto thanks
if %enjoy%=2 goto why

:thanks
cls
echo Thank you! if there were any problems please email me 
pause
goto exit

:why
echo Can you please take the time to email me any problems you had with the program Thanks!
pause
goto exit

:exit
cls
echo test

答案 2 :(得分:0)

是的,它可以,但是该变量应该与setInterval在同一个上下文中,如下所示:

b = {a :1}; setTimeout(function(){ b.a++; console.log(b)}, 1000)

如果你想调用一个函数,那么num需要是全局的,这样函数才能访问变量。

由于incrementB无法访问变量b

,因此会失败
function incrementB() { return b++; } 
function someFunc() { var b = 3; } 
setInterval( incrementB, 500 );

这样可行,因为b是全局的(但试着避免这种情况):

var b = 0;
function incrementB() { return b++; } 
function setValueToB() { b = 3; } 
setInterval( incrementB, 500 );

答案 3 :(得分:0)

这是我的尝试,因为我喜欢避免全局变量。这使计数器UIPageViewController保持在一个闭包中,num返回的函数可以访问该闭包。

change_background