未捕获的类型错误:无法将属性“hidden”设置为 null
2020-11-30
4813
我有一个下拉菜单,当从该下拉菜单中选择“其他”值时,它应该触发一个名为其他位置的输入表单字段以显示在 UI 中。当代码运行时,它到达 document.getElementById('otherPosition').hidden = false; 我收到上述错误。为什么 id 为空?
HTML:
<div class="column" id="otherPosition" hidden>
<div style="padding-right: 10px;">
<label for="signeeContact.otherPosition">Other Position</label>
<input type="text" value="{{_contract.signeeContact.otherPosition::input}}" placeholder="Other Position" />
</div>
</div>
函数:
_displayOtherPositionField(val) {
if (val != undefined) {
if (val == "28") {
document.getElementById('otherPosition').hidden = false;
}
}
}
2个回答
有点晚了,但我遇到了同样的错误。也许其他人可以从中受益。当我在头部写入
<script src="index.js"></script>
时,我遇到了此错误。
<head>
<title>My Website</title>
<meta charset="utf-8">
<script src="index.js"></script>
</head>
经过研究,我发现它可能会返回 null,因为它试图在 html 完全加载之前访问它。当我将脚本导入移至正文末尾时,我的问题就解决了。
<body>
<div id="test">
</div>
<script src="index.js"></script>
</body>
Muhammet İkbal
2023-09-07
在这里它工作正常。这意味着如果您设法以类似的方式链接您的元素,它也应该正常工作。所以问题可能来自其他地方。
function displayOtherPositionField() {
let val = document.getElementById('test').value
if (val != undefined) {
if (val == "2") {
document.getElementById('otherPosition').hidden = false;
}
}
}
<div class="column" id="otherPosition" hidden>
<div style="padding-right: 10px;">
<label for="signeeContact.otherPosition">Other Position</label>
<input type="text" value="{{_contract.signeeContact.otherPosition::input}}" placeholder="Other Position" />
</div>
</div>
<select name="numbers" id="test" onchange="displayOtherPositionField()">
<option value="1">1</option>
<option value="2">2</option>
</select>
显示 div#otherPosition 的另一种方法可能是使用 CSS
document.getElementById('otherPosition').style.display = "block"
,而其默认值为
none
BeHFaR
2020-11-30