Jquery OR || 操作员不工作

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

$.each(x, function(i, field){ if (field.name === "title" || "amount") { $( ".added-inquiry" ).find(".row:last-child").find(".column").find( ".added-inquiry-item").append( '' + '' + field.value + '' + '
' ); }

你要么必须重申这样的条件

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

或者您可以使用数组

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

你不能使用|| 像那样。

你需要这样做:

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

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

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

你也可以这样做:

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

如果要测试的值超过2,则此function尤其有用。

你的代码执行如下:

 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) { ... }