javascript - Javascript:设置checked=false不会从复选框中删除复选标记
问题描述
我有一个嵌入在 div 中的复选框,如以下 HTML 所示:
<div>
<div class="ms-Checkbox is-checked is-enabled root-751">
<input type="checkbox" data-automation-id="ProductSkuId_18181a46-0d4e-45cd-891e-60aabd171b4e" class="input-521" id="checkbox-886" aria-label="Office 365 E1" aria-describedby="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e" aria-checked="true" value="18181a46-0d4e-45cd-891e-60aabd171b4e" checked="">
<label class="ms-Checkbox-label label-738" for="checkbox-886">
<div class="ms-Checkbox-checkbox checkbox-752">
<i data-icon-name="CheckMark" aria-hidden="true" class="ms-Checkbox-checkmark checkmark-754"></i>
</div>
<div class="css-742">
<div class="css-743" data-automation-id="LicenseText_Office 365 E1">Office 365 E1</div>
</div>
</label>
</div>
<div class="css-736" id="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e" data-automation-id="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e">
<div class="css-735">12 of 591 licenses available</div>
</div>
</div>
从上面我们可以看到,有一个“复选框”类型的输入,如果我使用以下 javascript:
$("#checkbox-886").prop('checked', false);
该框仍处于选中状态。我还尝试了以下方法:
document.getElementById("checkbox-886").removeAttribute("checked")
尽管我看到选中的属性已从输入中删除,但它仍然没有从复选框中删除复选标记。
我猜测复选框周围的 div 也有责任,因为我看到了“is-checked”属性,并且我不确定如何编写 javascript 来在通过 javascript 更改子元素时强制更改父元素。任何帮助或见解将不胜感激。提前致谢。
解决方案
当您尝试取消选中该元素时,该元素可能尚未加载。将事件侦听器添加到DOMContentLoaded
:
document.addEventListener("DOMContentLoaded", () => {
document.getElementById("checkbox-886").checked = false
});
<div>
<div class="ms-Checkbox is-checked is-enabled root-751">
<input type="checkbox" data-automation-id="ProductSkuId_18181a46-0d4e-45cd-891e-60aabd171b4e" class="input-521" id="checkbox-886" aria-label="Office 365 E1" aria-describedby="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e" aria-checked="true" value="18181a46-0d4e-45cd-891e-60aabd171b4e"
checked="">
<label class="ms-Checkbox-label label-738" for="checkbox-886">
<div class="ms-Checkbox-checkbox checkbox-752">
<i data-icon-name="CheckMark" aria-hidden="true" class="ms-Checkbox-checkmark checkmark-754"></i>
</div>
<div class="css-742">
<div class="css-743" data-automation-id="LicenseText_Office 365 E1">Office 365 E1</div>
</div>
</label>
</div>
<div class="css-736" id="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e" data-automation-id="LicenseSubText_18181a46-0d4e-45cd-891e-60aabd171b4e">
<div class="css-735">12 of 591 licenses available</div>
</div>
</div>
推荐阅读
- python - 合并下一行熊猫中的值
- django-rest-framework - TemplateResponseMixin 需要在 DRF 中定义 'template_name' 或实现 'get_template_names()'
- angular7 - 从“ngFor”元素向工具提示模板传递上下文
- r - R: plot.new 还没有被调用
- machine-learning - 有没有办法在 ml5 yolo() 中使用自定义模型?
- java - Spring 在集成测试中没有达到 ControllerAdvice
- reactjs - 在 React 中,有没有办法通过单击另一个组件的按钮来重新安装组件?
- batch-file - 创建一个批处理文件以运行带有一个参数的 .exe
- excel - Yahoo Finance 财务数据的 VBA data-reactid
- php - 从 Laravel 禁用密码重置