首页 > 解决方案 > 卡在 Javascript 中的“IF”语句

问题描述

我试图让某个 div 的显示样式为“none”,如果它引用了一个显示样式为“block”的 div,例如:


var x = document.getElementById("first_question");
var y = document.getElementById("second_question");

if (x.style.display = "block") {
y.style.display = "none";
}

但是,我在“first_question”div 中有两个按钮,根据按下哪个按钮,应该将“second_question”的 style.display 更改为“block”:

function button() {
y.style.display = "block";
}

HTML 看起来像这样:


  <div id="first_question">
    <p>This is question #1</p>

      <input type="button" onclick="button()"  value="button">
      <input type="button" onclick="whatever()" value="whatever">

  </div>

  <div id="second_question">
    <p>This is question #2</p>

      <input type="button" onclick="option1()" value="option1">
      <input type="button" value="option2">

  </div>




标签: javascripthtml

解决方案


我不确定你在问什么,但我想我可能会看到问题:

if (x.style.display = "block") {
y.style.display = "none";
}

在这里,您使用单个 = 符号而不是两个或三个(请参阅编辑)。这意味着代码将始终将 x 设置为显示块,并且由于值如何在 javascript 中“真实”,if 语句将评估为真,并且 y 将始终将其显示设置为无。

编辑:

最初我写道,使用一个等号而不是两个。但是,最好在 javascript 中使用三个等号(我也经常忘记这也是主要的 Java 程序员)。这是因为它强制进行类型检查,从而防止可以在此处找到的奇怪行为:https ://github.com/denysdovhan/wtfjs#-is-equal-


推荐阅读