javascript - 卡在 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>
解决方案
我不确定你在问什么,但我想我可能会看到问题:
if (x.style.display = "block") {
y.style.display = "none";
}
在这里,您使用单个 = 符号而不是两个或三个(请参阅编辑)。这意味着代码将始终将 x 设置为显示块,并且由于值如何在 javascript 中“真实”,if 语句将评估为真,并且 y 将始终将其显示设置为无。
编辑:
最初我写道,使用一个等号而不是两个。但是,最好在 javascript 中使用三个等号(我也经常忘记这也是主要的 Java 程序员)。这是因为它强制进行类型检查,从而防止可以在此处找到的奇怪行为:https ://github.com/denysdovhan/wtfjs#-is-equal-
推荐阅读
- javascript - 动画引导卡替换消失的引导卡
- mongodb - Apache nifi - 如何实现“如果在 GetMongo 处理器中找不到记录则继续”
- dns - 如何获取基于不同 DNS 的自定义登录页面?
- apache-spark - 使用 spark sql 将字符串转换为 spark 数据框中的日期
- command - 如何使用 AT+COMMAND 解锁密码
- html - HTML5 画布(Animate CC)使用按钮从舞台上删除影片剪辑
- typescript - TypeScript 3 的通用 curry 函数
- python - 在 PyCharm 中执行部分脚本并将数据框等保存在内存中
- java - JSF 保留旧数据
- prometheus - Prometheus 查询一个时间间隔下的总体平均值