Javascript语法问题?

时间:2013-09-10 22:25:53

标签: javascript jquery

IF条件逻辑是否正确?它适用于test1但不适用于test2或“”

      if($(this).attr("value") === ("test1" || "test2" || ""))
      {
          submitForm($(this).attr("value"));
      }

3 个答案:

答案 0 :(得分:3)

您需要再次测试每个可能的值:

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)

答案 1 :(得分:1)

if($(this).attr("value") === ("test1" || "test2" || "")) {
    submitForm($(this).attr("value"));
}

这里发生了什么? OR ||运算符返回第一个 truthy 值,因此("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!

答案 2 :(得分:0)

if($.inArray(this.value,['test1','test2','test3']) != -1){
    //...
}