2013-03-23 140 views
-3

我需要在我的javascript的这个比较工作。JavaScript比较问题

if ((q2 != '' && correct2 != 'True') || (q2 != '' && correct2 != 'true') || (q2 != '' && correct2 != 'false') || (q2 != '' && correct2 != 'False')) 
{ 
    alert("You must enter true or false."); 
}  

Q2和correct2是文本框,如果Q2具有东西在里面和correct2不等于真,真,假,或False那么我想消息框弹出。我的代码不起作用。如果我在空白处输入true或false,错误信息仍然显示。

编辑

我发现如何使它工作。而不是||在比较之间我把& &它完美的作品。

+0

现在你已经修复了语法错误,修复了这个问题。创建一个* minimal *测试用例 - 这应该包括表达式适用的值,并且它不适用 - 它显示什么“不起作用”,并解释为什么*它“不起作用”和预期的。然后,我会去找你一个副本。提示:'q || 'True''总是*真正的表达式和'x || y || z'与'(x || y)||相同z'。 – 2013-03-23 19:37:38

+0

好的,请停止随机更改您的代码..尤其是不知道以前是什么。 – 2013-03-23 19:46:10

+0

好吧,我知道你不能或者我只是在简化。上面的代码正是我想要发生的,但它没有。当我在空白处输入true或false时,它仍然显示警告框。 – 2013-03-23 19:50:32

回答

2

为了得到一个文本输入的值,这样做

var q2Value = q2.value;

对于条件语句,||是或不是or,并且每次你做一个比较,你需要2个值/变量

(correct2 !== 'True) || (correct2 !== 'true')...

你可以看到我在括号中包含了比较,所以它完全清楚应该与什么比较什么,即使它并不是绝对必要的。

由于在比较其他条件之前需要q2是正确的,因此可以使用称为短路的漂亮功能。基本上,&&只有继续进行。如果第一个比较truthy,所以你会做

(qa2 !== '') && (the rest)

需要注意的是,如果用户不进入价值可言,当你的文本字段的值,它会是undefined(我认为),而不是'''。所以,你应该只是做

qa2 && (...)

基本上nullundefined''都falsy在JavaScript中,所以如果QA2是任何这些值的,的第二部分,将不会被处理。

+0

我正在制作一个可打印的测验/测试生成器。这不适用于任何班级。我不懂你在说什么。 – 2013-03-23 19:34:54

+0

什么部分? [15个字符] – hvgotcodes 2013-03-23 19:37:55

+0

我需要它有q2!=''第一个。如果没有输入q2,那么这个比较不适用。 – 2013-03-23 19:40:27

-1

试试这个

if(q2 !== '' && !(correct2 == 'true') && !(correct2 == 'True') && !(correct2 == 'False') && !(correct2 == 'false')) 
{ 
    alert("You must enter true or false.") 
}; 
+3

........... ?????????? – 2013-03-23 19:23:36

+0

正如问题q2和correct2中所述是**文本框**。 OP需要知道如何将这些值存入js。 – 2013-03-23 19:25:44

0

这应该工作。

if ((q2 != '' && correct2 != 'True') || (q2 != '' && correct2 != 'true') || (q2 != '' && correct2 != 'false') || (q2 != '' && correct2 != 'False')) 
{ 
    alert("You must enter true or false."); 
} 
+0

如问题q2和correct2中所述,是**文本框**。 OP需要知道如何将这些值存入js。 – 2013-03-23 19:26:01

+0

我不认为他的问题与如何将html中的值读入JS相关。我认为他有一个语法问题。 如果他需要帮助将html元素的值加载到JS中,他可以在我上面发布的内容之前添加这些行。 var q2 = document.getElementById(“idOfQ2TextBox”); var correct2 = document.getElementById(“idOfCorrect2TextBox”); – njtman 2013-03-23 19:29:44

+0

@njtman不,我能够读取值,因为如果我只是在if(q2!=''&& correct2!='true,那么我在它的工作框中键入true – 2013-03-23 19:32:31