2016-07-27 46 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());