首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getElementById无法访问加载的DOM

getElementById无法访问加载的DOM
EN

Stack Overflow用户
提问于 2017-05-12 06:16:03
回答 2查看 559关注 0票数 1
代码语言:javascript
复制
<div>
    <label>City:<input id="aqi-city-input" class="122" type="text" ></label><br>
    <label>Point:<input id="aqi-value-input" type="text"></label><br>
    <button id="add-btn">OK</button>
</div>

JavaScript

代码语言:javascript
复制
var CityName = document.getElementById('aqi-city-input'); 
var CityMore = document.getElementsByClassName('122');    
var Quality = document.getElementById('aqi-value-input'); 
var Button = document.getElementById('add-btn');

console.log(document.getElementById('aqi-city-input'));  //null
console.log(CityName);                                   //null
console.log(CityMore);                                   //html object
console.log(Quality);                                    //null
console.log(Button);                                     //null

除了getElementsByClassName之外,返回null,我有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2017-05-12 06:21:20

您必须将JavaScript包含在HTML文档之后,如下所示。如果您使用的是一个JavaScript文件,您也必须在HTML之后包含这个文件。

代码语言:javascript
复制
<div>
  <label>City:<input id="aqi-city-input" class="122" type="text" ></label><br>
  <label>Point:<input id="aqi-value-input" type="text"></label><br>
  <button id="add-btn">OK</button>
</div>
<script src="path/to/your/script.js"></script>
<script>
  var CityName = document.getElementById('aqi-city-input'); 
  var CityMore = document.getElementsByClassName('122');    
  var Quality = document.getElementById('aqi-value-input'); 
  var Button = document.getElementById('add-btn');

  console.log(document.getElementById('aqi-city-input')); 
  console.log(CityName);                               
  console.log(CityMore);                                 
  console.log(Quality);                           
  console.log(Button);    
</script>

您也可以在HTML文档之前使用JavaScript,但在这种情况下,您必须将代码包装在事件侦听器DOMContentLoaded中,这样,如果加载了HTML,JavaScript就会执行(而JavaScript可以看到HTML元素)。

如果是JavaScript文件,您应该将代码包装到事件侦听器中。

代码语言:javascript
复制
<script src="path/to/your/script.js"></script> <!-- content is wrapped in event listener -->
<script>
  document.addEventListener("DOMContentLoaded", function(event) {
    var CityName = document.getElementById('aqi-city-input'); 
    var CityMore = document.getElementsByClassName('122');    
    var Quality = document.getElementById('aqi-value-input'); 
    var Button = document.getElementById('add-btn');

    console.log(document.getElementById('aqi-city-input')); 
    console.log(CityName);                               
    console.log(CityMore);                                 
    console.log(Quality);                           
    console.log(Button);    
  });
</script>
<div>
  <label>City:<input id="aqi-city-input" class="122" type="text" ></label><br>
  <label>Point:<input id="aqi-value-input" type="text"></label><br>
  <button id="add-btn">OK</button>
</div>

票数 2
EN

Stack Overflow用户

发布于 2017-05-12 08:08:27

将javascript代码移动到HTML下面。

或者在页面加载完成后执行它。

在JQuery中,您可以如下所示:

代码语言:javascript
复制
<script>
    $(document).ready(function() {
        //... your code ...//
    });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43930549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档