如何在 javascript 中使元素的标签文本变为粗体?
2023-06-01
167
我的 HTML :
<div id="PDF">
<input type="checkbox" id="pdf" name="pdf" value="pdf">
<label for="pdf">PDF</label>
</div>
我的 JS :
document.addEventListener('change',function(event){
if(event.target.id == "pdf"){
if(event.target.checked == true){
event.target.label.style.fontWeight = "bold";
}
else{
event.target.label.style.fontWeight = "normal";
}
}
});
令我沮丧的是,当我执行代码时,出现了这个错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'style')
我该如何解决这个问题?
3个回答
这里主要有两个问题。首先,事件目标没有标签属性。您应该明确选择标签并更改样式。其次,我建议仅将事件侦听器添加到
#pdf
div 而不是整个文档。这样,您就不需要检查 ID,并且事件侦听器不会在每次更改时触发。例如:
document.getElementById("pdf").addEventListener("click", event => {
const label = document.querySelector("label[for=pdf]");
if(event.target.checked == true){
label.style.fontWeight = "bold";
}
else{
label.style.fontWeight = "normal";
}
})
oflint_
2023-06-01
希望您一切安好..
let divid = document.getElementById('PDF');
let checkid = document.getElementById('pdf');
let labelid = document.getElementById('label');
checkid.addEventListener( "change", () => {
if(checkid.checked){
label.style.fontWeight='bold';
}
else{
label.style.fontWeight='normal';
}
});
<div id="PDF">
<input type="checkbox" id="pdf" name="pdf" value="pdf">
<label for="pdf" id="label"> PDF</label>
</div>
MihirBangia
2023-06-01
尝试此代码,实际上目标可以有多个标签。
因此属性不是
label
,而是
labels
。
<div id="PDF">
<input type="checkbox" id="pdf" name="pdf" value="pdf">
<label for="pdf">PDF</label>
</div>
<script>
document.addEventListener('change', function (event) {
if (event.target.id == "pdf") {
if (event.target.checked == true) {
event.target.labels[0].style.fontWeight = "bold";
} else {
event.target.labels[0].style.fontWeight = "normal";
}
}
});
</script>
Krunal Jethva
2023-06-01