Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何切换元素';使用纯JavaScript创建属性?_Javascript_Html - Fatal编程技术网

如何切换元素';使用纯JavaScript创建属性?

如何切换元素';使用纯JavaScript创建属性?,javascript,html,Javascript,Html,在我写这篇文章时出现的大多数类似问题是(用户希望使用纯JS切换元素的类)或(用户希望使用jQuery切换其他属性) 我的问题是两者的混合。我知道存在使用纯JS切换元素类的el.classList.toggle()方法,但我希望使用纯JS切换不同的属性,特别是一些单选按钮的选中的属性,因为当选择不同的选项时,这(令人烦恼的)不会改变 是否可以使用纯JS在我的两个单选按钮上切换checked属性(切换的意思是,如果元素存在,则从元素中删除该属性,如果不存在,则添加该属性) radios=docum

在我写这篇文章时出现的大多数类似问题是(用户希望使用纯JS切换元素的类)或(用户希望使用jQuery切换其他属性)

我的问题是两者的混合。我知道存在使用纯JS切换元素类的
el.classList.toggle()
方法,但我希望使用纯JS切换不同的属性,特别是一些单选按钮的
选中的
属性,因为当选择不同的选项时,这(令人烦恼的)不会改变

是否可以使用纯JS在我的两个单选按钮上切换
checked
属性(切换的意思是,如果元素存在,则从元素中删除该属性,如果不存在,则添加该属性)

radios=document.getElementsByName(“地板”);
对于(i=0;i
一楼

一楼
我没有测试这个,但这个应该可以

radios = document.getElementsByName("Floor");
  for (i = 0; i < radios.length; i++) {
    radios[i].addEventListener('change', function () {
       if ( this.checked ) {
          this.setAttribute("checked", "false");
       } else {
          this.setAttribute("checked", "true");
       }
  }, false);
}
radios=document.getElementsByName(“地板”);
对于(i=0;i
属性没有切换方法

您可以使用:

elm[elm.hasAttribute('hidden')?'removeAttribute':'setAttribute']('hidden','')

elm.hasAttribute('hidden')?removeAttribute(“隐藏”):setAttribute(“隐藏”)

编辑:现在有了属性的切换方法

elm.toggleAttribute('hidden')

实际上有一个用于布尔属性的
元素。toggleAttribute
方法


但是,由于IE不支持它,您可能需要添加

,这肯定会很好地工作

const attrToggle = (el, attr) => el.getAttribute(attr) == 'false' ? el.setAttribute(attr, "true") : el.setAttribute(
      attr, "false")

它类似于本机。

元素。用于切换布尔属性的toggleAttribute(name)


另见-。由于“切换”不存在,您可以轻松创建一个函数来实现这一点。您为两个元素提供了相同的ID。这是无效的。它们可以有相同的名称,但ID是唯一的。可能是@Amy I的副本实际上只是从ChromeDev工具复制了这些行。实际上,我使用的是MVC,这些元素是由Html.RadioButton生成的,它似乎会自动将相同的id分配给这两个元素。在任何情况下,我认为这与我的问题无关使用“”检查属性是否已定义
this.toggleAttribute("checked");