gpt4 book ai didi

javascript - 为什么我的逻辑是错误的?复选框和直通

转载 作者:行者123 更新时间:2023-11-28 05:11:22 26 4
gpt4 key购买 nike

我是 JS 新手。只是想帮助弄清楚为什么我的逻辑是错误的,当我尝试在 checkbox.checked === true 时更改文本的样式。

这是 code .

JS:

var c = document.getElementById("cbx");
var l = document.getElementById("cbxtxt");

if ( c.checked === true ) {
l.style.textDecoration = "line-through";
}

HTML:

<html>
<head></head>
<body>
<input type="checkbox" id="cbx">
<label for="cbx" id="cbxtxt">Shaneningans</label>
//<script type="text/javascript" src="cbx_test.js"></script>
</body>
</html>

提前致谢!

最佳答案

您需要将逻辑包装在 event listener 中以便每次选中/取消选中复选框时它都会运行。此外,您可能想要处理未选中复选框时发生的情况。

var c = document.getElementById("cbx"); // for checbox
var l = document.getElementById("cbxtxt"); // for label

c.addEventListener("change", function() {
l.style.textDecoration = c.checked ? "line-through" : "none";
})
<input type="checkbox" id="cbx">
<label for="cbx" id="cbxtxt">Shaneningans</label>

解释这一行:

l.style.textDecoration = c.checked ? "line-through" : "none"

正如其他人所说,c.checked === true 并不是必需的,因为您可以直接使用 c.checked 作为您的条件。为了使代码更简洁,我使用 conditional operator (?:) 而不是 if/else


最后,只是为了演示如何 @A. Wolff使用纯 CSS 的建议可行:

#cbx:checked~label {
text-decoration: line-through;
}
<input type="checkbox" id="cbx">
<label for="cbx" id="cbxtxt">Shaneningans</label>

关于javascript - 为什么我的逻辑是错误的?复选框和直通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55183180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com