18910140161

JavaScript-如何更改React中所有复选框的值?-堆栈溢出

顺晟科技

2022-10-19 12:47:16

150

我要将复选框的值从true更改为false

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

但是当我尝试这样做时,我得到一个错误:因为x是HTMLCollection,并且x[I]只返回 因此没有“checked”属性。 如何处理?


顺晟科技:

问题在for循环中。条件应为i仅限。

如何执行此操作的问题是您没有利用React中的状态。

我会这样做。

设置复选框的初始状态:

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

然后将状态传递到输入的checked属性中:

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

在handleChange函数中更新复选框的状态:

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

这将更新具有

的所有复选框

如果这个像您建议的那样是React应用程序中的代码,那么就不应该像React那样将本机元素方法和React JS混合在一起有自己的方法来更新DOM.

应将复选框的状态存储为state,将其状态设置为该状态,然后调用函数更新该状态,从而使用该新状态重新呈现。

尝试此:

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

或者您可以在这里查看此问题的简要说明:

在React js中设置复选框值

请将for循环中的<=更改为

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

或使其循环到长度-1

 var x = document.getElementsByClassName("checkbox")
      for(let i=0; i<=x.length; i++) {
         x[i].checked = false;
       } 

最好使用setState来管理复选框的值-最好在ShadowDOM中更新这些值,因为这一部分的React是关于

有关如何实现复选框和反应的具体说明可以在这里找到-- http://react.tips/checkboxes-in-react-16/

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航