You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

函数中getElementById返回Null:DOM元素ID参数传递问题排查

问题分析与解决方案

我来帮你排查一下问题所在,其实是两个小细节出错了:

1. 函数内的字符串引号误用

你在函数里写了document.getElementById('elem'),这里的'elem'是固定字符串,意味着你一直在尝试获取**id为"elem"**的元素,但你的DOM里根本没有这个元素,所以自然返回null。正确的做法是使用传入的参数变量elem,而非把它当成字符串:

var idElements = document.getElementById(elem); // 去掉elem的引号,使用参数变量

2. 函数调用时的参数类型错误

你调用函数时写了children(table)children(ol),这里的tableol是未声明的变量,浏览器会把它们当成全局变量查找,找不到的话会抛出ReferenceError(部分旧浏览器可能有自动映射DOM元素的非标准特性,但不推荐依赖)。正确的做法是传入字符串形式的id值

children('table'); // 传入字符串格式的id
children('ol');    // 同理传入ol的id字符串

修正后的完整代码

<body>
  <table id="table">
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </table>
  <ol id="ol">
    <li>11</li>
    <li>22</li>
    <li>33</li>
    <li>44</li>
  </ol>
  <script>
    function children(elem) {
      var idElements = document.getElementById(elem);
      console.log(idElements);
    }
    children('table');
    children('ol');
  </script>
</body>

这样修改后,控制台就能正确输出对应的table和ol元素了。

内容的提问来源于stack exchange,提问作者Sviat Kuzhelev

火山引擎 最新活动