цикл JavaScript странное выполнение - PullRequest
0 голосов
/ 24 февраля 2012

Есть цикл для установки маркеров на карте:

for (i = 0; i <= 6; i++) {
    _coord = prj_markers[i];
    alert(i);
    instance.set_marker(instance, provider, i, _coord, divBlock);
}

Этот код предупреждает "0" один раз и делает instance.set_marker (как он виден).

Установите предупреждение после выполненияinstance.set_marker:

for (i = 0; i <= 6; i++) {
    _coord = prj_markers[i];        
    instance.set_marker(instance, provider, i, _coord, divBlock);
    alert(i);
}

Предупреждает «6» ОДНАЖДЫ, но должно быть шесть раз предупреждений.Что происходит?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Цикл for использует i в качестве глобальной переменной, поэтому, если ваша функция instance.set_marker также использует i в качестве глобальной переменной и устанавливает для нее значение, превышающее 6, цикл завершится.

Попробуйте изменить имя переменной и сделать ее локальной, используя оператор var:

for (var SomeOtherName = 0; SomeOtherName<= 6; SomeOtherName++) {
    _coord = prj_markers[SomeOtherName];        
    instance.set_marker(instance, provider, SomeOtherName, _coord, divBlock);
    alert(SomeOtherName);
}
0 голосов
/ 24 февраля 2012

Попробуйте объявить вашу начальную переменную таким образом в начале вашего оператора for.

for (var i = 0; ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...