刷新后如何将类添加到页面上选中的单选按钮的父标签中

时间:2018-07-21 17:44:35

标签: javascript jquery html css3 dom

每个单选按钮都位于我的html标记中的标签内。我无法更改标记。我使用以下JavaScript代码添加了事件监听器。但是,当我刷新页面时,单选按钮仍处于选中状态,但父元素不再具有该类,因为当我再次单击它时,事件侦听器将再次将该类添加到父标签中。页面重新加载后如何选择所有选中的单选按钮的父母,以便再次添加课程。

let form = document.querySelector( "form" );
form.addEventListener( "click", ( evt ) => {
  let trg = evt.target,
      trg_par = trg.parentElement;
  if ( trg.type === "radio" && trg_par && trg_par.tagName.toLowerCase() === "label" ) {
    let prior = form.querySelector( 'label.checked input[name="' + trg.name + '"]' );
    if ( prior ) {
      prior.parentElement.classList.remove( "checked" );
    }
    trg_par.classList.add( "checked" );
  }
}, false );

1 个答案:

答案 0 :(得分:0)

由于您尚未共享完整的代码,因此我以自己的方式复制了HTML。

您可以在应用程序中打开注释的代码。

可以根据您的HTML修改

标签

<!DOCTYPE html>
<html>

<body>
  <label>
Radio 1: <input type="radio" name="rdo" value="1" class="rdo"/>
</label>
  <label>
Radio 2: <input type="radio" name="rdo" checked="checked" value="2" class="rdo"/>
</label>

  <script>
    radio = document.getElementsByTagName("input");

    for (var trv = 0; trv < radio.length; trv++) {
      if (radio[trv].checked) {
        let trg = radio[trv],
          trg_par = trg.parentElement;
        if (trg.type === "radio" && trg_par && trg_par.tagName.toLowerCase() === "label") {
          console.log(trg);
          /*let prior = form.querySelector( 'label.checked input[name="' + trg.name + '"]' );
          if ( prior ) {
            prior.parentElement.classList.remove( "checked" );
          }*/
          trg_par.classList.add("checked");
        }
      }
    }
  </script>

</body>

</html>