2009-11-12 8 views
2

저는 왜 Javascript for() 루프가 Drupal 블록에서 작동하지 않는지 알아 내려고 애 쓰면서 오랜 시간을 보냈습니다. 구문을 확인한 것 같습니다. 왜 이것이 작동하지 않는지 알 수 있습니까? ! 아무것도하지 않는Drupal의 Javascript for() 루프가 작동하지 않습니까?

$(document).ready(function() { 
var i=0; 
while (i<=5) 
    { 
alert(i); 
    i++; 
} 
}); 

- 그리고 나는이 인 - 같은 것을 넣어 또한 경우 중 하나가 작동하지 않습니다

for (var i=0; i<31; i++){ 
alert(i); 
} 

감사합니다!

+2

BTW - Drupal에서 $ (document) .ready를 직접 사용하지 말고 Drupal.behaviors를 대신 사용하십시오. 방법 및 이유에 대한 답변에서 링크를 확인하십시오. http://stackoverflow.com/questions/1717373/add-a-function-to-onload-in-drupal/1717490#1717490 –

+0

헨릭 코드 외모에 동의합니다. 맞습니다. 아마도 jQuery가 제대로 시작되지 않았을 것입니다. 루프를 벗어난 경고를 받으십시오. 응답이 있는지 확인하십시오. – dpmguise

답변

3

스레드가 실행 완료 될 때까지 경고가 발생하지 않습니다. 그때까지, 나는 너의 한계를 초과했다. 이것은 매우 자주 묻는 질문입니다. 자바 스크립트에서 클로저에 대해 알아야합니다.

다음은 좋은 개요입니다. StackOverflow에는이 질문에 대한 답이 많이 있습니다. 그 기사에서

http://james.padolsey.com/javascript/closures-in-javascript/

,이 코드 : 당신이 원하는 유사하다

for (var i = 0; i < 100; ++i) { 
    myElements[i].onclick = (function(n) { 
     return function() { 
      alert('You clicked on: ' + n); 
     }; 
    })(i); 
} 

.

+0

감사합니다. 그건 의미가 있습니다. – Bloopy

+0

경고가 실행을 차단하지 않습니까? 이것은 클로저와 아무런 관련이 없다고 생각합니다. 문제의 코드는 루프에서 이벤트 핸들러를 연결하지 않습니다. –

+0

흠. 당신 말이 맞을 수도 있습니다. 저는 이것을 삭제하고 생각할 것입니다. 경고가 차단되어야합니다. – Nosredna

관련 문제