2009-07-13 5 views
0

내 웹 사이트 용으로 만든 이미지 슬라이더가 있는데, 3 초마다 슬라이드가 설정됩니다 (진단 후 느려지지만 10 초 동안 무엇이 잘못되었는지 보길 좋아하지 않습니다). 또한 자동 슬라이드하기 전에 toSlide 변수가 1 (기본값)으로 설정되어 있는지 확인합니다. 사용자가 다음/이전 링크 나 특정 슬라이드를 클릭하면 toSlide을 0으로 설정합니다.왜 내 변수가 자체적으로 재설정됩니까?

내 문제는 자동 슬라이드를 다시 실행 한 다음 toSlide을 1로 다시 설정한다는 것입니다. 알아낼 수 없습니다. 왜. 아무도 나 좀 도와 줄래?

당신은 자바 스크립트를 my site에 HTML을보고, 여기에 있습니다 :

//Featured Work Image Slider 
// sC = sliderCount 
// sA = slideAmount 
// pH = pictureHeight 
// sT = slideTime 
var sC = 1; 
var pH = 364; 
var sT = 364 
var toSlide = 1; 
function slide(ms) { 
    $('#featured-box li').stop().animate({'top':sA},ms); 
    $('.sN').css({color:'#598dbe'}); 
    $('#sN'+sC).css({color:'#464646'}); 
    $('#fD > div').fadeOut(ms,function(){ 
     $(this).css({display:'none'}); 
    }); 
    $('#fD-'+sC).fadeIn(ms,function(){ 
     $('#fD-'+sC).css({display:'block'}); 
    }); 
    console.log(toSlide); 
} 
function autoSlide(ms) { 
    if(sC < 4) { 
     sC++; 
     sA = -(sC - 1) * pH; 
    } else { 
     sC = 1; 
     sA = 0; 
    } 
    slide(ms); 
    if(toSlide = 1) { 
     setTimeout ("autoSlide(sT)", 3000); 
    } 
} 
$(document).ready(function() { 
    setTimeout ("autoSlide(sT)", 3000); 
    $('#sL').click(function(){ 
     toSlide = 0; 
     if(sC > 1) { 
      sC--; 
      sA = -(sC - 1) * pH; 
     } else { 
      sC = 4; 
      sA = -3 * pH; 
     } 
     slide(sT); 
     return false; 
    }); 
    $('#sN').click(function(){ 
     toSlide = 0; 
     if(sC < 4) { 
      sC++; 
      sA = -(sC - 1) * pH; 
     } else { 
      sC = 1; 
      sA = 0; 
     } 
     slide(sT); 
     return false; 
    }); 
    $('.sN').click(function(){ 
     toSlide = 0; 
     var sNid = this.id.split('sN'); 
     sC = sNid[1]; 
     sA = -(sC - 1) * pH; 
     slide(sT); 
     return false; 
    }); 
}); 
+0

하하 "이 변수는 어디에서 재설정해야합니까?" 변수는 스스로 재설정하지 않습니다. 컴퓨터는 우리가해야 할 일만합니다. – Travis

+0

정말 사실입니다. 아아! – Kerrick

답변

9
if (toSlide = 1) { 

는이 할당되지 비교입니다. 당신은하고 싶지 :

if (toSlide === 1) { 

변화된 전체 기능 :

function autoSlide(ms) { 
    if(sC < 4) { 
     sC++; 
     sA = -(sC - 1) * pH; 
    } else { 
     sC = 1; 
     sA = 0; 
    } 
    slide(ms); 
    if(toSlide === 1) { 
     setTimeout ("autoSlide(sT)", 3000); 
    } 
} 
+0

아, 고마워요! Javascript에 익숙하지 않아 두 가지의 차이점을 알지 못했습니다. – Kerrick

2

(toSlide == 1)

이 C에서 많은 사람들을 물린 경우 (toSlide = 1) 할 필요가있는 경우 스타일 언어

0

이 사람들의 대답은 해결책입니다. 이미 사용하고 있는지 여부는 모르겠지만 Firebug을 사용하면 코드에서 이러한 버그를 쉽게 추적 할 수 있습니다.

관련 문제