[英]why does DOM method such as getElementById not find the element?
<div>
<label for="rdb_disease">Are you okay?</label>
<div class="col-sm-9" class="rdb_disease">
<input type="radio" id="no" name="rdb_diseease" value="0">
<label for="no">No</label>
<input type="radio" id="yas" name="rdb_diseease" value="1">
<label for="yes">yes</label>
</div>
</div>
<div id="disease_panel">
<p>hello</p>
</div>
<script>
var rdb_disease = document.getElementById("rdb_disease");
function rdb_visible_hide_panel(rdb_name,panel_name) {
var radio = rdb_name.getElementsByTagName("input");
if (radio[1].checked == true) {
panel_name.style.display = "block";
} else {
panel_name.style.display = "none";
}
}
rdb_disease.addEventListener("change", function() {
rdb_visible_hide_panel(rdb_disease,disease_panel);
});
</script>
I see an error message (Uncaught TypeError: Cannot read property 'addEventListener' of null) I ithink the problem is (getElementsByTagName) But anyway it cannot reach Element what is the problem i want anser in thes problem我看到一条错误消息(未捕获的 TypeError:无法读取 null 的属性“addEventListener”)我认为问题是(getElementsByTagName)但无论如何它无法到达元素我想要在这些问题中分析的问题是什么
for
attribute's value must be the id of an element and not the class
or name
of the element. for
属性的值必须是元素的 id 而不是class
或元素的name
。 Ref: https://www.w3schools.com/tags/att_label_for.asp参考: https://www.w3schools.com/tags/att_label_for.asp
You have used an extra "
in <label for="rdb_disease" ">
.您在
<label for="rdb_disease" ">
中使用了一个额外的"
。
Added an id rbd_disease
添加了一个 id
rbd_disease
name
correction for <input>
tag. <input>
标签的name
更正。 diseease
=> disease
diseease
=> disease
Used ternary operator.使用三元运算符。
Created variable disease_panel
.创建变量
disease_panel
。
Changed the default display
of disease_panel
to none
.将
disease_panel
的默认display
更改为none
。
<div>
<label for="rdb_disease">Are you okay?</label>
<div class="col-sm-9" class="rdb_disease" id="rdb_disease">
<input type="radio" id="no" name="rdb_disease" value="0">
<label for="no">No</label>
<input type="radio" id="yas" name="rdb_disease" value="1">
<label for="yes">yes</label>
</div>
</div>
<div id="disease_panel" style = "display : none">
<p>hello</p>
</div>
<script>
var rdb_disease = document.getElementById("rdb_disease");
var disease_panel = document.getElementById("disease_panel");
function rdb_visible_hide_panel(rdb_name,panel_name) {
var radio = rdb_name.getElementsByTagName("input");
panel_name.style.display = radio[1].checked ? "block" : "none";
}
rdb_disease.addEventListener("change", function() {
rdb_visible_hide_panel(rdb_disease,disease_panel);
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.