Javascript:“else if”语句是否有限制?

时间:2012-01-11 01:00:38

标签: javascript if-statement

我从文本字段中获取价值。我有一个if if和其他if语句。

即使条件为真,否则最后一个if的问题仍未执行。

如果我改变了最后的其他,如果它执行并提供警报。如果语句没有执行,我将其更改回else。否则如果在此之前是好的,因为它在某个特定条件下正在触发/执行。

function Valcheck()
{

var txtVal = document.getElementById("sometextField").value;



if(txtVal =="%") 
    {

        alert("% is only allowed with other characters.");
        return;
    }       

    else if(txtVal.indexOf("%") != -1) 
    {
        if((txtVal.indexOf('%')) != (txtVal.length-1)) 
        {
            alert(" % is only allowed at the end.");
            return;
        }       
    } 
    else if(txtVal.indexOf(",") != -1) 
    {
        alert("Comma or comma separated values are not allowed.");
        return;

    } 
    else if(( txtVal.length  >0) &&  (txtVal.indexOf("%") == -1)) 
    {
        alert("Please enter % at the end of the value.");
        return;
    }            

    else if( txtVal.length > 11 ) 
    {

        alert(" Value can't be greater than 11 characters.");
        return;

    }

}

请帮忙。感谢

5 个答案:

答案 0 :(得分:4)

if语句的数量没有限制。问题在于,之前的if语句中的一个会捕获您正在测试的案例。

针对您的测试案例,查看每个if语句,看看它是否被前一个案例抓住了。

答案 1 :(得分:4)

问题是,如果txtVal.length > 11,则满足以下要求:

    else if(txtVal.indexOf("%") != -1)

或满足:

    else if(( txtVal.length  >0) &&  (txtVal.indexOf("%") == -1))

这样它永远不会到达else if( txtVal.length > 11 )。你需要改变这个:

    else if(txtVal.indexOf("%") != -1) 
    {
        if((txtVal.indexOf('%')) != (txtVal.length-1)) 
        {
            alert(" % is only allowed at the end.");
            return;
        }       
    }

到此:

    else if(txtVal.indexOf("%") != -1 && txtVal.indexOf('%') != (txtVal.length-1))
    {
        alert(" % is only allowed at the end.");
        return;
    }

这样它就不会“捕获”txtVal.indexOf('%') == (txtVal.length-1)

的情况

答案 2 :(得分:1)

这是因为你的else if(txtVal.indexOf("%") != -1)是真的(所以,如果从顶部开始,则是第二个),但条件为"如果"在里面它是不正确的(所以它不会去"返回"。

答案 3 :(得分:1)

没有办法击中最后一个'else-if': 如果textVal中有'%',它将转到第二个'else-if' 如果它没有'%',它将转到最后一个之前的那个。 所以最后如果永远不会被击中。

答案 4 :(得分:0)

if else嵌套没有限制。获取嵌套if else子句存在逻辑障碍。考虑使用

switch(caseVariable){
  case 1:  document.write("caseVariable = " + 1);
           break;
  case 35:  document.write("caseVariable = " + 35);
           break;
  default: break;
}
相关问题