javascript - 为什么此复选框缺少 "checked"属性?

标签 javascript dom properties

在我正在编写的组件中,我想检查元素的“checked”属性。不幸的是,该元素似乎不包含“checked”属性,至少不是我设置的方式。

这是 JS 片段:

var submenus  = document.querySelectorAll( ".hbm-panel-item-label" );
for ( var label of submenus ) {
  // console.log( "label.for = " + label.getAttribute( "for" ) );

  label.addEventListener( "click", function() {
    var label_for = this.getAttribute( "for" ); 
    // console.log( label_for + " was clicked." );

    var checkboxes = document.querySelectorAll( ".hbm-panel-item-checkbox" );
    for ( var cb of checkboxes ) {
      console.debug( cb );

      if ( cb.getAttribute( "name" ) === label_for ) {
        console.log( label_for + " has attribute 'checked': " + cb.hasAttribute( "checked" ) );
        console.log( label_for + " is " + cb.getAttribute( "checked" ) );  
      }
    }
  });
}

...结果如下:

Firefox console output

当我打开该元素的属性时,我确实看到一个值为“false”的选中属性:

enter image description here

提前道歉,我是一个 JS 菜鸟。我感觉这很简单。我还感觉到,如果我使用 jQuery,这将需要大约三行代码......

最佳答案

属性位于 DOM 中,属性位于被解析到 DOM 中的 HTML 中。 复选框的 HTML 没有“checked”属性,但复选框有一个属性“checked”。 您可能只需要检查

cb.checked

而不是寻找属性。

关于javascript - 为什么此复选框缺少 "checked"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48832834/

相关文章:

javascript - 覆盖指令中的行为 : Best practices?

javascript - this.value 返回带值的括号

javascript - 按键时自动将字母转换为小写字母?

HTML5 输入日期日历样式

angularjs - 使用 AngularJS 删除 DOM 元素

javascript - 如何通过javascript将字符串转换为数组?

用于操作 DOM API 的 Javascript 设计模式

c# - 我的 DataGridView 属性窗口变成空白!

python - __slots__ 是如何工作的,你如何实现自己的?

spring - 使用Spring加载属性(通过系统属性)