两个 JavaScript 条件指示三元运算符不能同时工作



以下脚本使用三元运算符根据存储在数组中的数据使用 jQuery 创建不同的对话框:

$div.html(data).dialog({
    dialogClass: array[current][5] == 4 ?
                    "green" :
                    array[current][5] == 3 ?
                        "green" :
                        array[current][5] == 0 ?
                            "red" :
                            "orange",
    width:"750px",
    title: array[current][5] == 4 ?
                "Ok" :
                array[current][5] == 3 ?
                    "Ok" :
                    array[current][5] == 0 ?
                        "Bad" :
                        "Average",
    position: {my: "center top",
               at: "center top",
               of: "#doc-frame"},
    buttons: {
        'Previous': function() {
            if (current == 0) {
                return;
            }
            else {
                current--;
            }
            $(this).dialog("close").remove();
            createDialog(array[current][0], current);
        },
        'Next': function() {
            if (current == (array.length - 1)) {
                return;
            }
            else {
                current++;
            }
            $(this).dialog("close").remove();
            createDialog(array[current][0], current);
        }
    }
});

由于某些原因,更改标题不起作用。但是当我注释掉 dialogClass 行时它有效(我不更改对话框的样式/格式)。有谁知道为什么这两个条件(dialogClass 和 title)不能一起工作,以及让两者同时工作的正确语法是什么?谢谢。

您可以使用对象而不是三元结构。

var values = {
    4: { color: 'green', title: 'Ok' },
    3: { color: 'green', title: 'Ok' },
    0: { color: 'red', title: 'Bad' },
    default: { color: 'orange', title: 'Average' }
};

用法

dialogClass: (values[array[current][5]] || values.default).color,
title:       (values[array[current][5]] || values.default).title,

最新更新