2012-01-19 35 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