【问题标题】:Checking if checkbox is checked, display both booleans [closed]检查复选框是否被选中,显示两个布尔值[关闭]
【发布时间】:2017-12-08 00:25:05
【问题描述】:

我正在尝试确定复选框是否被选中,但是当我按下复选框时,javascript 显示:

false
true

当我再次按下它时,它会变为

true
false

然后随着我进一步推动它继续......

我怎样才能只显示其中一个?

这是我的 javascript 代码:

function selected() {
  const bg = document.getElementById("myCheck").checked;

  console.log(bg);

  if (bg == 'true') {
    document.getElementById("changeBG").style.backgroundColor = 'red';
  } else {
    document.getElementById("changeBG").style.backgroundColor = 'green';
  }
}

【问题讨论】:

  • 你的代码在哪里?另外,关于 SO 的例子已经很多了,你是不是先搜索答案了?
  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查tourHow to Ask
  • 欢迎来到 Stack Overflow!我们无法为您提供我们看不到的代码。向我们展示您所指的代码。另外,请查看tour,环顾四周,并通读help center,尤其是How do I ask a good question? 还要注意,在发布之前进行彻底的研究是SO 的要求。我无法立即想象任何关于如何查看复选框是否被选中的问题,而通过少量研究无法非常快速回答。
  • 抱歉各位,发帖太快了。代码已添加。

标签: javascript checkbox


【解决方案1】:

这是不正确的:

if (bg == 'true') {

checked 属性为您提供布尔值,而不是字符串。 true 是一个字符串。

只需使用:

if (bg) {

【讨论】:

  • 或者,去掉 true 两边的引号。
  • @Zammy:不,true == 'true' 是假的。 Details here,但基本上:它们最终都被转换为数字,而你最终得到 1 == NaN,这是错误的。
  • @ScottMarcus:是的,但是bg已经是一个布尔值。那么你在哪里停下来? bg == true,或(bg == true) == true,或((bg == true) == true) == true... :-) 因此,if (bg)(反之,if (!bg))。
  • @TJ 我知道。但是,你没有在你的答案中解释,所以我只是指出删除引号会使其成为布尔值。
猜你喜欢
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 2020-03-01
  • 2018-12-17
  • 2014-01-11
  • 2015-06-25
相关资源
最近更新 更多