【问题标题】:How do get the value of only checked checkboxes in Javascript?如何获取Javascript中仅选中复选框的值?
【发布时间】:2023-03-10 07:54:02
【问题描述】:

这是我在这里的第一篇文章。 我的表格有问题。我希望能够仅获取表单上选中的框的值并将它们添加到输入之一。 问题是我要么得到所有复选框(选中或未选中),要么我得到未定义。 复选框是这样的

<input type="checkbox" className="checkbox" value="Triatholons" />
              Triathlon Training Plans
            </label>
    ```
    //and the function I have been trying is this 
    function itworked() {
  alert("Sky will contact you shortly!")
  var values = document.getElementsByClassName("checkbox:checked")
  console.log(values)
  }

这将返回一个 HTML 集合,当我尝试提取值时,我只会得到未定义的值。 我在这里想念什么?谢谢您的帮助。

【问题讨论】:

  • getElementsByClassName 替换为querySelectorAll,因为这将支持:checked 后缀。你需要在类名之前使用.
  • 不使用[reactjs]标签为什么会有?

标签: javascript reactjs forms checkbox


【解决方案1】:

首先,不要使用类,change your selector

[type="checkbox"]:checked

querySelectorAll一起使用:

document.querySelectorAll('[type="checkbox"]:checked')

现在,您将看到我们得到了一个 NodeList。如果您只想要其中的值,我们将不得不将元素“映射”到它们的值。最简单的方法是convert to an array with the spread syntax,并使用built-in array map feature

const values = [
  ...document.querySelectorAll('[type="checkbox"]:checked')
].map(el => el.value);

这就是它的全部内容!你会看到这返回了一个值数组。

【讨论】:

  • 显然你知道你在做什么。这正是我想要的,但是如果您不介意,我还有一个问题。如何查看函数返回的内容?当我 console.log(values) 它给了我一个空数组。
  • @imstupidpleasehelp 嗯,它对我来说很好用。你什么时候运行这段代码?您需要在页面加载后并在有人选中其中一个框后运行它。
  • 我在表单提交数据成功时运行它。这是完整代码codesandbox.io/s/sharp-water-nh15e?file=/src/components/…
  • @imstupidpleasehelp 这是表格的一部分?您应该考虑改用 FormData。 stackoverflow.com/a/46376650/362536
猜你喜欢
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多