2014-11-08 2 views
0

2 초마다 임의의 타일에서 클래스를 전환하는 데 javascript를 사용하는 타일 수가있는 페이지가 있습니다. 같은 타일을 연속으로 두 번 토글하지 않도록 체크를 추가하고 싶습니다. 이런 식으로,하지만이 작동하지 않습니다. 거기에 몇 가지 문제가 여기에 있었다 (몇 개의 키에 히트 - 울프 @)Javascript 난수가 마지막과 같은지 확인하십시오.

$(document).ready(function() 
{ 
var gcFlip = $('.flip').find('div'); 
var sameImg; 
function flip() 
{ 
    if (gcFlip.length >= 1) 
    { 
     var nextImg = gcFlip[Math.floor(Math.random() * gcFlip.length)]; 
      while(nextImg === sameImg) 
       { 
        var nextImg = gcFlip[Math.floor(Math.random() * gcFlip.length)]; 
       } 
     nextImg = sameImg; 
     $(nextImg).toggleClass('transition'); 
    } 
} 
setInterval(flip, 2000); 
}); 
+1

sameImg를 초기화하지 않으므로 항상 정의되지 않습니다. –

+3

'nextImg = nextImg'가 아닌'sameImg = nextImg'이어야하고'var nextImg'가 두 번 있어야합니다 –

+0

난수를 사후 처리하면 더 이상 임의가 아닙니다. 이 경우에는 차이가 없지만 일반적으로 나쁜 습관입니다. –

답변

0

,

  1. 폐쇄의 범위는 문서 준비 함수 외부 gcFlip & currentImg 이동 - nextImg 각을 재정의되고 있었다 루프 내부 시간. flip() 함수를 문서 준비 f (x) 내에서 정의되지 않도록 이동했습니다.

  2. 전환하기 전에 '현재 이미지'포인터를 설정하고 할당을 뒤집어서 (말장난 없음) 전환을 호출하기 전에 nextImg를 현재 이미지로 재설정했습니다.

이 값은 사용자가 원하는 값에 근접해야합니다.

var gcFlip; 
var currentImg; 

$(document).ready(function(){ 
    var gcFlip = $('.flip').find('div'); 
    setInterval(flip, 2000); 
}); 

function flip() 
{ 
    if (gcFlip.length >= 1) 
    { 
     var nextImg = gcFlip[Math.floor(Math.random() * gcFlip.length)]; 
     while(nextImg == currentImg) 
     { 
     nextImg = gcFlip[Math.floor(Math.random() * gcFlip.length)]; 
     } 
     $(nextImg).toggleClass('transition'); 
     currentImg = nextImg; 
    } 
} 
관련 문제