2013-11-02 2 views
2

#imacon 안에 많은 이미지가 있고 모든 이미지가 무작위로 나타나지만 한 이미지 만 나타나기를 바랍니다. 어떻게해야합니까?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); 

    });