2009-11-12 1 views
2

Я только что потратил много времени, пытаясь понять, почему мой цикл Javascript for() не будет работать в блоке Drupal, я чувствую, что я проверил синтаксис - любая идея, почему это не работает? !Javascript для цикла() в Drupal не работает?

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

Это ничего не делать - а также, если я ставлю что-то вроде этого косвенно не работает либо:

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

Спасибо!

+2

BTW - вы не должны использовать $ (document) .ready в Drupal напрямую, вместо этого используйте Drupal.behaviors. Проверьте ссылки в этом ответе, как и почему: http://stackoverflow.com/questions/1717373/add-a-function-to-onload-in-drupal/1717490#1717490 –

+0

Я согласен с Henrik - выглядит код правильно, возможно, jQuery не инициируется должным образом - попробуйте оповещение из цикла, посмотрите, получите ли вы какой-либо ответ – dpmguise

ответ

3

Ни одно из предупреждений не будет выполняться до тех пор, пока поток не будет выполнен. К тому времени я превысил ваш лимит. Это очень часто задаваемый вопрос. Вам нужно узнать о закрытии в JavaScript.

Вот хороший обзор. В 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

 Смежные вопросы

  • Нет связанных вопросов^_^