2013-11-02 4 views
2

У меня есть много изображений внутри #imacon, и я хочу, чтобы все изображения отображались случайным образом, а просто отображались 1 изображение. Как я могу это сделать?setInterval только запускается один раз

$(document).ready(function() { 
    var leng = $('#imacon').children().length; 
    var rm = Math.floor(Math.random()*leng); 

    setInterval(function() { 
     $('#imacon img:eq('+rm+')').fadeIn(); 
    }, 500) 
}); 

ответ

2

Необходимо изменить случайное число после (или до) каждого изображения.

$(document).ready(function() { 

     var leng = $('#imacon').children().length; 

     setInterval(
      function() { 
       var rm = Math.floor(Math.random()*leng); 
       $('#imacon img:eq('+rm+')').fadeIn(); 
      }, 
     500); 

    }); 
+1

Почему бы просто не вычислить 'rm' один раз перед его использованием, а не повторить одну и ту же строку кода? – jfriend00

0

setInterval работает каждый 500ms, однако вы замирания в же изображение каждый раз. Вы должны получить случайное число внутри функции setInterval. Попробуйте следующее:

var leng = $('#imacon').children().length; 
setInterval(function() { 
    var rm = Math.floor(Math.random() * leng); 
    $('#imacon img:eq(' + rm + ')').fadeIn(); 
}, 500) 
0

Как вы ожидаете показать уже показанное изображение? вы должны .hide() все изображения, прежде чем исчезать в случайном изображении.

$(document).ready(function() { 

     var leng = $('#imacon').children().length; 

     setInterval(
      function() { 
       var rm = Math.floor(Math.random()*leng); 
       $('#imacon img').hide(); 
       $('#imacon img:eq('+rm+')').fadeIn(); 
      }, 
     500); 

    }); 
Смежные вопросы