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两侧的每个语句都是完全独立的,并将自身评估为单个布尔值, true
或false
。 因此, field.name === "title"
会将自身评估为true
或false
,然后"amount"
将尝试将自身评估为true
或false
。
我相信任何非空和非零都被视为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) { ... }