每个单选按钮都在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 );发布于 2018-07-21 18:25:53
由于您还没有共享完整的代码,所以我以我的方式复制了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>
https://stackoverflow.com/questions/51458617
复制相似问题