событие click с циклом for через массив дает мне только последний элемент? - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть массив:

var bar = [];

У меня есть цикл for, проходящий через массив:

            for (var i = 0; i <= 3; i++) {
                $(".left-lg").find(".name").html(bar[i].name);
            }

Я пытаюсь заменить содержимое DIV.name содержимым в массиве, оно работает, но дает мне только последнее в массиве. Я прочитал, что при событии click с javascript цикл будет в конце, вот почему.

В любом случае, как это исправить, чтобы он прошел через весь цикл, а не просто дал последний?

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Это потому, что вы всегда устанавливаете содержимое HTML всех элементов, соответствующих .name. Попробуйте вместо этого использовать аргумент index, указанный для each () :

$(".left-lg .name").each(function(index) {
    $(this).html(bar[index].name);
});
0 голосов
/ 01 февраля 2012

Это потому, что каждый раз, когда вы вызываете:

$(".left-lg").find(".name").html(bar[i].name);

вы перезаписываете свои предыдущие циклы.

Установите переменную, равную значениям, которые вы хотите в массиве, затем передайте этот массив вэлемент:

var allNames;

for (var i = 0; i <= 3; i++) {
    allNames = allNames + bar[i].name);
}

$(".left-lg").find(".name").html(allNames);
0 голосов
/ 01 февраля 2012

Попробуйте использовать append вместо html $(".left-lg").find(".name").append(bar[i].name);

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