IF条件逻辑是否正确?它适用于 test1 但不适用于 test2 或 ""
if($(this).attr("value") === ("test1" || "test2" || ""))
{
submitForm($(this).attr("value"));
}
IF条件逻辑是否正确?它适用于 test1 但不适用于 test2 或 ""
if($(this).attr("value") === ("test1" || "test2" || ""))
{
submitForm($(this).attr("value"));
}
您需要再次测试每个可能的值:
if($(this).attr("value") === "test1" || $(this).attr("value") === "test2" || $(this).attr("value") === ""))
用临时变量清理:
var attribute = $(this).attr("value");
if(attribute === "test1" || attribute === "test2" || attribute === ""))
或者,您可以使用indexOf()
速记:
if (["test1", "test2", ""].indexOf($(this).attr("value")) != -1)
if($(this).attr("value") === ("test1" || "test2" || "")) {
submitForm($(this).attr("value"));
}
这里发生了什么?OR ||
运算符返回第一个真值("test1" || "test2" || "")
,所以返回值为"test1"
。在这种情况下,此表达式以这种方式解释:
(("test1" || "test2") || "")
评估的第一个表达式是"test1" || "test2"
,它返回,"test1"
因为它是一个真值。第二个表达式是"test1" || ""
。它再次返回"test1"
(而且""
是falsy)。
编写类似内容的一种非常快速的方法是在数组中搜索:
var acceptedValues = ["test1", "test2", ""];
if(acceptedValues.indexOf(this.value) != -1) submitForm(this.value);
在这个简单的操作中不需要 jQuery!
if($.inArray(this.value,['test1','test2','test3']) != -1){
//...
}