2013-09-27 3 views
1

У меня есть следующий кусок JS, который переключает цвет BG с красного на зеленый и так далее.javascript toggling background images

function blink() { 
      var currentColor = 'red'; 
      setInterval(function() { 
       document.body.style.backgroundColor = currentColor; 
       currentColor = currentColor === 'red' ? 'green' : 'red'; 
      }, 1000); 
     }; 

Есть ли способ изменить цвет изображения, чтобы он переключался между двумя изображениями вместо двух цветов?

Я попытался следующие, но без успеха:

function toggleBG() { 
      var currentColor = "Images/tableBGRed.gif"; 
      setInterval(function() { 
       var myDiv = document.getElementById("testDiv"); 
       myDiv.style.backgroundImage = "url('" + currentColor + "')"; 
       currentColor = currentColor === "url('Images/tableBGRed.gif')" ? "url('Images/tableBG.gif')" : "url('Images/tableBGRed.gif')"; 
      }, 1000); 
     }; 

Что-то не так с синтаксисом?

+0

у вас установлен палец ht и ширину вашего div, так как без содержимого div будет свернут и не будет виден, если он не имеет содержимого или высоты и ширины. –

+0

Это также может помочь: http://stackoverflow.com/questions/10867503/change-background-image-in-body Еще одна вещь, которую вы могли бы попробовать - это просто избавиться от синтаксиса?: И использовать фактическое if/else. Я никогда не доверял этому синтаксису. –

+0

Да, у div есть содержимое, а функция toggleBG() выше BG изменяется на красный и остается красной, никогда не меняется на «url (« Images/tableBG.gif »)« кажется –

ответ

2
currentColor = currentColor === "url('Images/tableBGRed.gif')" ? "url('Images/tableBG.gif')" : "url('Images/tableBGRed.gif')"; 

заставит строку, чтобы стать чем-то вроде "url(url(' Images/cat.gif '))", который не является допустимым значением для myDiv.style.backgroundImage,

, так как вы получили myDiv.style.backgroundImage = "url('" + currentColor + "')"; в предыдущей строке.

Обновления:

Вы можете использовать CSS3, чтобы сделать его похожим на анимацию (замирание):

#testDiv{ 
-webkit-transition: all 0.1s ease; 
-moz-transition: all 0.1s ease; 
-ms-transition: all 0.1s ease; 
-o-transition: all 0.1s ease; 
transition: all 0.1s ease; 
} 
1

Мне кажется, что ваш код создает BackgroundImage как

url('url('Images/xxx.gif')') 

Try

function toggleBG() { 
    var currentColor = "url('Images/tableBGRed.gif')"; 
    setInterval(function() { 
     var myDiv = document.getElementById("testDiv"); 
     myDiv.style.backgroundImage = currentColor; 
     currentColor = currentColor === "url('Images/tableBGRed.gif')" ? "url('Images/tableBG.gif')" : "url('Images/tableBGRed.gif')"; 
    }, 1000); 
}; 
+0

Да, это было так. Спасибо. Есть ли способ сделать «анимацию» более гладкой? Как увядание и выход? –

+2

@sd_dracula Мое предложение - использовать jQuery или CSS3. –

+0

см. Http://net.tutsplus.com/tutorials/html-css-techniques/css-fundametals-css-3-transitions/ для получения информации о переходах CSS3 – user2764860