gpt4 book ai didi

onchange 赋值的 JavaScript 位置

转载 作者:行者123 更新时间:2023-12-02 16:18:48 25 4
gpt4 key购买 nike

我有一个复选框和一个文本输入。我希望仅在选中该复选框时才启用文本输入。我找到了这个问题的答案here ,但以下代码不起作用:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>title</title>
<script type="text/javascript">
document.getElementById('yourBox').onchange = function() {
document.getElementById('yourText').disabled = !this.checked;
};
</script>
</head>
<body>
<input type="text" id="yourText" disabled />
<input type="checkbox" id="yourBox" />
</body>
</html>

但是,我注意到如果我将 < script > 环境移到 < input > 框下方,代码就会工作

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>title</title>
</head>
<body>
<input type="text" id="yourText" disabled />
<input type="checkbox" id="yourBox" />
<script type="text/javascript">
document.getElementById('yourBox').onchange = function() {
document.getElementById('yourText').disabled = !this.checked;
};
</script>
</body>
</html>

为什么<script>环境的位置对onchange属性起作用?

最佳答案

这是因为页面是从顶部开始解析的,每个元素一解析完就添加进去。

解析 script 标记后,代码将立即运行。此时 input 标签尚未解析,因此 input 元素尚不存在。

通过将 script 标记放置在 input 标记下方,脚本将在创建 input 元素后运行。

您可以使用 onload 事件来确保代码在页面完全解析后运行,而不是重新排列代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>title</title>
<script type="text/javascript">
window.onload = function() {
document.getElementById('yourBox').onchange = function() {
document.getElementById('yourText').disabled = !this.checked;
};
};
</script>
</head>
<body>
<input type="text" id="yourText" disabled />
<input type="checkbox" id="yourBox" />
</body>
</html>

关于onchange 赋值的 JavaScript 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320439/

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