【问题标题】:Can't use innerhtml or select nodes, returns null无法使用 innerhtml 或选择节点,返回 null
【发布时间】:2014-02-26 03:41:45
【问题描述】:

经过几个小时的搜索,我还没有找到解决方案。每次我运行这段代码:

var output = document.getElementsByTagName('div');

var array = [];

for(var x = 0; x < output.length; x++){
    array.push(output[i])
    };

console.log(array);

我在控制台中得到的只是:

[];

我想要做的就是操作其中一个节点的内部 html(具体来说是节点 #4)。我也试过这个:

var output = document.getElementsByTagName('div')[4];

output.innerHTML='hello world';

刚刚返回:Uncaught TypeError: Cannot set property 'innerHTML' of undefined。任何帮助将非常感激。

我还应该提到,使用 querySelectorgetElementById 并定位特定的 div 只会返回 null。

【问题讨论】:

  • 你是在页面加载/dom 准备好之后这样做吗?
  • 您确定在页面加载后执行此操作吗?
  • 你在head里加载js资源吗?尝试将js代码移到body底部
  • js 源在正文中,但在顶部,所以我将尝试将其移至底部。至于页面加载后运行代码,我不会,我也试试。
  • 哇,这解决了问题。谢谢!我没有意识到将脚本标签放在页面顶部可能会导致任何问题。谢谢!

标签: javascript dom null innerhtml getelementsbytagname


【解决方案1】:

你会踢自己的。

在您的 for 循环中,您将 x 定义为迭代器,但您使用的是 output[i]。我还没有被定义。使用输出[x]。

此外,要获取第四个元素,您需要索引为 3 的元素。由于索引从零开始,第一个元素将为 0。第四个元素为 3。

【讨论】:

  • 哎呀。好吧,这仍然没有解决问题,但感谢您为我指出这一点。另外,我要定位的节点实际上是 4,包括第一个索引 0,所以从技术上讲,我想我会定位到第 5 个节点。
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多