2012-09-25 3 views
0

'.testimonial' divs의 무기한 수를 표시하도록 온라인에서 찾은 기존 스크립트에서이 자바 스크립트 메서드를 변경했습니다. 스크립트는 크롬과 파이어 폭스에서 잘 작동하지만 f12를 사용하여 스크립트의 디버깅을 시작하지 않는 한 인터넷 익스플로러에서는 컴파일되지 않습니다. 이 스크립트를 작성하는 더 좋은 방법이 있습니까? 나는 온라인 아이디어를 찾았지만 아무것도 찾을 수 없었다. 이 문제는 console.log(testimonialCount); 문과 함께 있다고 생각하지만 더 좋은 방법을 쓰는 것은 확실하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사. IE의 개발자 도구가 열려 있지 때javascript 메서드가 IE에서 컴파일되지 않지만 디버그를 실행할 때 잘 작동합니다.

//rotate testimonials script 
jQuery('.testimonial').hide(); 

var testimonialCount = $('.testimonial').length; 
console.log(testimonialCount); 
var currentItem = 0; 
var timeout; 
timeout = window.setTimeout((function(){switchDiv();}));  

switchDiv = function() { 
    if (currentItem == testimonialCount - 1) { 
     jQuery('.testimonial').eq(testimonialCount - 1).hide(); 
     currentItem = 0; 
     jQuery('.testimonial').eq(0).fadeIn(); 
     timeout = window.setTimeout((function(){switchDiv();}),7000); 
    } 
    else { 
     jQuery('.testimonial').eq(currentItem).hide(); 
     currentItem = currentItem + 1; 
     jQuery('.testimonial').eq(currentItem).fadeIn(); 
     timeout = window.setTimeout((function(){switchDiv();}),7000); 
    } 
} 
+0

"컴파일"과 아무런 관련이 없음에 유의하십시오. Javascript가 컴파일되지 않았습니다. – SLaks

답변

3

, 아니 console 개체가 없습니다.
따라서 console.log()을 호출하면 오류가 발생합니다.

이를 방지하려면 if ('console' in window)을 확인하고 자신 만의 더미 콘솔을 만들거나 그렇지 않은 경우 아무 것도 기록하지 마십시오.

+0

감사합니다. 'console.log (testimonialCount);'는 스크립트에서 실제로 아무것도하지 않았으므로 방금 꺼냈다. 콘솔 작동 방식을 이해하도록 도와 주셔서 감사합니다. – fudge22it

2

몇 가지 참고 사항 :

이 스크립트의 맨이 추가 :

window.console = console || { 'log' : function(){} }; 

이 경우 window.console 정의는 없습니다. 오류를 피하는 것 외에는 아무 것도하지 않습니다.

timeout = window.setTimeout(function(){ switchDiv(); },7000); 

을 ... 아니면 그냥 더 단순화 :

다음 시간 제한 기능을 주위에 괄호를 꺼내

timeout = window.setTimeout(switchDiv,7000); 

을 내가 까다롭게 여기에 존재하고 있지만 :

currentItem = currentItem + 1;가있다 같음 currentItem++;

어니스트 피곤한 물건 window.setTimeoutsetTimeout와 동일합니다.

관련 문제