только одна из двух переменных действует в JQuery, если заявление

0

Когда пользователь нажимает кнопку "Обзор", появляется надпись, показывающая, какие поля формы еще должны быть удовлетворительно завершены. У меня есть массив объектов, который отслеживает каждое поле формы и присваивает этому элементу формы "проверенный" или "непроверенный".

В пределах наложения те поля, которые непроверены, должны отображаться с красным цветом фона, а те, которые были проверены, зеленым. Кроме этого, либо "Завершить", либо "Не завершать" появится как подходящее рядом с каждой ссылкой поля формы.

Когда я запускаю следующий код, появляется надпись "Complete"/"Not complete", однако цвет остается красным. Я не понимаю, как одна переменная внутри оператора if может быть обновлена (статус), а другая - нет (цвет).

Мой код выглядит следующим образом:

$("#review").click(function() {
    var status = "";
    var color = "";

    //Show the modal dialog
    showModal(dialog);

    //Determine the content of the modal dialog
    $("#cl").empty();
    $.each(object, function(key, element) {
        if (element.status == "unverified") {
            status = "Not complete";
            color = "#ef8f8b";
        } else {
            status = "Complete";
            color = "#bfef8b";
        }

        $("#cl").append("<tr><td class='td-left'>"+element.review+"</td><td class='td-right'>"+status+"</td></tr>");
        $("#cl .td-left").css("background-color", color);
    });
});
  • 0
    Вы смотрели на значение color в консоли? Я думаю, что это нормально, но ваш селектор jquery не так.
  • 0
    Да, я проверил в консоли, и я получаю правильное значение для color в каждом случае.
Показать ещё 1 комментарий
Теги:
if-statement
each
variables

1 ответ

3
Лучший ответ

$("#cl.td-left").css("background-color", color); обновляет все элементы, которые соответствуют, а не только тот, который вы недавно добавили. Попробуйте настроить только новый.

$("#cl .td-left:last").css("background-color", color);

или еще лучше, отредактируйте его, прежде чем добавлять его.

$("<tr><td class='td-left'>"+element.review+"</td><td class='td-right'>"+status+"</td></tr>")
    .css("background-color", color)
    .appendTo("#cl");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню