2012-01-19 41 views
2

代碼:如果條件與&&的優先級不工作

if (!IDTextField.value && !FirstNameField.value && 
    !LastNameField.value && !DateOfBirthField.value!GenderField.value) { 
    alert('No criteria Added'); 
    return; 
} 

當所有的文本字段爲空的alert不叫。

+0

查看編輯我的答案 – xbonez

回答

3

你錯過了最後兩個標準之間的&&

它應該是:

if (!IDTextField.value && !FirstNameField.value && 
    !LastNameField.value && !DateOfBirthField.value && !GenderField.value) 

在這樣的情況下,它使一個很大的意義來格式化您的if語句是這樣的:

if ( !IDTextField.value 
     && !FirstNameField.value 
     && !LastNameField.value 
     && !DateOfBirthField.value  
     && !GenderField.value) 

如果你這樣做,你不能犯你剛纔犯的錯誤。

1

這個小憎惡是什麼?

... !DateOfBirthField.value!GenderField.value 

我認爲應該是:

... !DateOfBirthField.value && !GenderField.value 
2

你應該寫你這樣的代碼

if (!IDTextField.value && !FirstNameField.value && 
    !LastNameField.value && !DateOfBirthField.value && !GenderField.value) { 
    alert('No criteria Added'); 
    return; 
} 

你錯過了最後兩個標準之間的& &

1

錯過&&,添加它並嘗試,笑如果沒有其他錯誤存在,則工作

2

xbonez說得沒錯。您在最後兩個表達式之間缺少& &。

對於一些不是那麼重要了,我想獲得所有評估的表達式中使用||,然後使用!,而不是否定所有的表達與&&添加否定和對其進行評估。這可以使這個表達式更快一些,如果沒錯的話。

if (!(IDTextField.value || FirstNameField.value || 
    LastNameField.value || DateOfBirthField.value || GenderField.value)) { 
    alert('No criteria Added'); 
    return; 
} 

告訴我你在想什麼?

+0

完全。每個不(!)是一個操作員。所以!x &&!y實際上是5次操作。反對!(x || y)的3個操作。 – meson10