Почему этот код JavaScript, входящий в цикл for после логического выражения, больше не имеет значения true? - PullRequest
0 голосов
/ 27 января 2012

Редактировать: Оказалось, что Firebug неправильно прошел по коду, а моя ошибка была в другом месте. Коллега, который видел подобное поведение, предположил, что регулярная очистка кэша браузера может помочь.

У меня есть простая функция, которая разбивает строку через запятую и использует токены для заполнения хранилища данных Dojo:

UpdateFileNames: function(names) {
    var fileNames = names.split(",");
    var fileNameData = [];
    for (var i = 0; i < fileNames.length; i++) {
        fileNameData.push({ name: fileNames[i], id: fileNames[i] });
    }
    this.fileListStore = new dojo.store.Memory({ data: fileNameData });
}

Я перебираю этот код в Firebug и не могу поверить в то, что вижу. Все довольны до i == fileNames.length, после чего цикл вводится снова и fileNames[i] недействителен.

Что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Завершает ли names запятую? Если это так, fileNames[fileNames.length - 1] == ''.

0 голосов
/ 27 января 2012

Вы пытались зациклить на один меньше?

for (var i = 0; i < fileNames.length-1; i++) {
    fileNameData.push({ name: fileNames[i], id: fileNames[i] });
}

Если это работает, вам нужно посмотреть, как вы генерируете свой список (имена). Так что вы не получите пустые элементы в конце.

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