简体   繁体   English

为什么 getElementById 等 DOM 方法找不到元素?

[英]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)但无论如何它无法到达元素我想要在这些问题中分析的问题是什么

  1. 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

  1. You have used an extra " in <label for="rdb_disease" "> .您在<label for="rdb_disease" ">中使用了一个额外的"

  2. Added an id rbd_disease添加了一个 id rbd_disease

  3. name correction for <input> tag. <input>标签的name更正。 diseease => disease diseease => disease

  4. Used ternary operator.使用三元运算符。

  5. Created variable disease_panel .创建变量disease_panel

  6. 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.

相关问题 为什么 jQuery 或 getElementById 等 DOM 方法找不到元素? - Why does jQuery or a DOM method such as getElementById not find the element? 为什么`document.getElementById(“#sideNav”)` 找不到我的元素? - Why does `document.getElementById(“#sideNav”)` not find my element? 使用getElementById方法在iFrame中查找元素 - Using getElementById method to find an element inside an iFrame Javascript事件:getElementByID找不到插入的元素 - Javascript event: getElementByID does not find inserted element 为什么getElementById()。value无法正确返回元素? - Why does getElementById().value not returning the element correctly? document.getElementById是否返回一个live dom元素? - Does document.getElementById return a live dom element? DOM getElementById 作为获取整个元素 - DOM getElementById as getting the whole element getElementById() 是如何在机器代码中实现的,为什么当它是 DOM 文档的一部分时它不是 DOM 元素的一部分? - How is getElementById() implemented in machine code and why is not part of a DOM element when it is a part of a DOM document? Google Spreadsheet Addon-getElementById找不到任何元素 - Google Spreadsheet Addon - getElementById does not find any element 为什么图像地图区域上的getElementById不返回IE中的area元素? - Why does getElementById on image map area not return the area element in IE?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM