【问题标题】:only one of two variables is being actioned in jquery if statement在 jquery if 语句中只有两个变量中的一个正在执行
【发布时间】:2013-11-29 06:16:45
【问题描述】:

当用户点击“审核”按钮时,会出现一个叠加层,向他们显示哪些表单字段尚未令人满意地完成。我有一个对象数组,它跟踪每个表单字段,并将“已验证”或“未验证”分配给该表单元素。

在叠加层中,未验证的字段应显示为红色背景色,已验证的字段应显示为绿色。除此之外,“完成”或“未完成”会酌情出现在每个表单字段参考旁边。

当我运行以下代码时,会出现正确的“完成”/“未完成”标签,但颜色仍为红色。我不明白 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);
    });
});

【问题讨论】:

  • 你在控制台中查看color 的值了吗?我的猜测是没问题,但是你的 jquery 选择器是错误的。
  • 是的,我在控制台中进行了检查,在每种情况下我都得到了 color 的正确值。
  • 在这种情况下,您可以编辑您的问题以澄清您的问题,因为这两个变量实际上都按预期进行了更改:)

标签: jquery variables if-statement each


【解决方案1】:

$("#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");

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多