每个单选按钮都位于我的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 );
答案 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>