【问题标题】:JavaScript comparison issuesJavaScript 比较问题
【发布时间】:2013-03-23 19:20:56
【问题描述】:

我需要在我的 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 不等于 true、True、false 或 False,那么我希望弹出消息框。我的代码不起作用。如果我在空白处输入 true 或 false,错误消息仍然会显示。

编辑

我已经找到了使它起作用的方法。而不是放||在我放 && 的比较之间,它工作得很好。

【问题讨论】:

  • 现在您已经修复了语法错误,请修复问题。创建一个 minimal 测试用例 - 这应该包括表达式适用和不适用的值 - 显示什么“不起作用”并解释原因 它“不起作用”以及预期的结果。然后,我去给你找一个副本。提示:q || 'True'总是为真表达式,x || y || z(x || y) || z 相同。
  • 好的,请停止随意更改您的代码 .. 尤其是不承认之前的代码。
  • 好吧,我知道你不能拥有或者我只是在简化。上面的代码正是我想要发生的,但它没有。当我在空白处输入 true 或 false 时,它​​仍然显示警告框。

标签: javascript comparison


【解决方案1】:

要获取文本输入的值,请执行以下操作

var q2Value = q2.value;

对于条件,|| 是或,而不是 or,每次进行比较时都需要 2 个值/变量

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

您可以看到我将比较用括号括起来,所以它非常清楚应该比较什么,即使它不是绝对必要的。

由于在比较其他条件之前您需要 q2 是正确的,因此您可以使用称为短路的漂亮功能。基本上,&& 只有在第一次比较是真实的情况下才会继续,所以你会这样做

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

请注意,如果用户根本不输入该值,那么当您获取文本字段的值时,它将是undefined(我认为),而不是'''。所以你真的应该这样做

qa2 && (...)

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

【讨论】:

  • 我正在制作一个可打印的测验/测试生成器。这不适用于任何课程。我不明白你在说什么。
  • 我需要它首先有 q2 != ''。如果没有在 q2 中输入任何内容,则此比较不适用。
【解决方案2】:

这应该可行。

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

【讨论】:

  • 如问题 q2 中所述,正确的 2 是 文本框。 OP 需要知道如何将这些值放入 js 中。
  • 我认为他的问题与如何将值从 html 读取到 JS 中无关。我认为他有语法问题。如果他需要帮助将 html 元素的值加载到 JS 中,他可以在我上面发布的内容之前添加这些行。 var q2 = document.getElementById("idOfQ2TextBox"); var correct2 = document.getElementById("idOfCorrect2TextBox");
  • @njtman 不,我能够读取这些值,因为如果我只输入 if(q2 != '' && correct2 != 'true 那么我在框中输入 true 就可以了。
  • @Dustin H,这就是我的想法,但出于某种原因,Lee Taylor 认为他比你更了解你在问什么 0_o。试试我在答案中发布的代码,看看它是否有效。
  • @Dustin H,很可能做你想做的事。您可能需要在 OP 中包含更多代码,以便我们更好地了解您遇到的问题。您的 OP 的语法不正确。正确的语法发布在我的答案中。如果它仍然不起作用,则其他原因导致问题。尝试使用 Chrome 调试器来帮助您找出问题所在。
【解决方案3】:

试试这个

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

【讨论】:

  • 如问题 q2 中所述,正确的 2 是 文本框。 OP 需要知道如何将这些值放入 js 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2011-05-26
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
相关资源
最近更新 更多