2016-07-27 60 views
-7

它的简单,如果用户输入一个数字,不以6或9 beggin,他得到的错误:简单的JavaScript如果与的charAt语句不工作

console.log($(this).val().charAt(0)); 

if($(this).val().charAt(0) != 6 || $(this).val().charAt(0) != 9){ 
    x=false; 
    }else { 
    x=true; 
    } 

CONSOLE.LOG正确显示的第一个字符。这意味着价值存在..

但无论我输入6或7或9,我总是会得到错误...为什么?

+7

认为一个人每秒约的OR这里。 –

+0

那么:'||'='OR' :) – eisbehr

+0

当它是6时会发生什么,你有'6!= 6 || 6!= 9',所以第二个表达式是truthy,与9相同(然后第一个表达式变为truthy),所以你的条件将总是返回true –

回答

1

您需要反转的逻辑条件,这两个州的不可能是在同一时间真,所以x始终设置为false。试试这个:

var chr = $(this).val().charAt(0); 
if (chr == '6' || chr == '9') { 
    x = true; 
} else { 
    x = false; 
} 

从那里,你现在可以看到,你甚至都不需要if条件,你可以设置x直接,就像这样:

var chr = $(this).val().charAt(0); 
var x = chr == '6' || chr == '9'; 
3

不管的somevar值,

somevar!=6 OR somevar!=9 

总是正确的。

最好的解决方案可能会是一个正则表达式:

var x = /^[69]/.test($(this).val());