Jquery OR ||操作员不工作

时间:2015-08-17 15:43:48

标签: jquery

这是一个非常简单的问题。或运算符不工作,我试图为标题和金额字段名称显示不同的功能。谢谢

$.each(x, function(i, field){
        if (field.name === "title" || "amount")
          {
            $( ".added-inquiry" ).find(".row:last-child").find(".column").find( ".added-inquiry-item").append(
                 '<input type="hidden" name="' + field.name + '" value="' + field.value + '"/>' +
                 '<span class="' + field.name + '">' + field.value + '</span>' + '<br>'
             );
        }

3 个答案:

答案 0 :(得分:1)

你要么必须重述像

这样的条件
if (field.name === "title" || field.name === "amount")

或者您可以使用数组

if (["title","amount"].indexOf(field.name) > -1)

答案 1 :(得分:0)

你不能那样使用||

你需要这样做:

if (field.name === "title" || field.name === "amount")

OR两侧的每个语句都是完全独立的,并将自己评估为单个布尔值truefalse。因此,field.name === "title"会将自己评估为truefalse,然后"amount"会将自己评估为truefalse。< / p>

我认为任何非空和非零都被视为true,因此您的OR语句将始终为真,因为"amount"将始终评估为true

你也可以这样做:

if (["title", "amount"].indexOf(field.name) > -1)

如果要测试的值超过2个,这将非常有用。

答案 2 :(得分:0)

您的代码执行如下:

temp = "title" || "amount"; // two "true" values, so "title" is assigned
if (field.name == temp);{ ... };

有效:

temp = "title";
if (field.name == temp) { ... }

要针对多个字符串测试一个变量,您必须直接写出各个测试:

if ((field.name == "title") || (field.name == "amount")) { ... }

如果你需要测试这种东西会变得乏味的许多物品,你可以尝试一个阵列:

if (["title", "amount", ...].indexOf(field.name) > -1) { ... }