我是HTML和JavaScript的新手,但我遇到了这个问题。
我有以下代码段:
<div data-contents="true">
<div class="" data-block="true" data-editor="369vc" data-offset-key="e371k-0-0">
<div data-offset-key="e371k-0-0" class="_1mf _1mj">
<span data-offset-key="e371k-0-0">
<span data-text="true">TEXT HERE</span>
</span>
</div>
</div>
</div>
我试图在&#34; TEXT HERE&#34;在控制台中使用以下命令(在this Stack Overflow thread上找到):
span = document.getElementById("data-text");
txt = document.createTextNode("TEXT HERE");
span.appendChild(txt);
然而,当我运行该命令时,我得到的全部是Uncaught TypeError: Cannot read property 'appendChild' of null at <anonymous>:3:6
。
我已经读过因脚本运行之前未定义的元素而导致的内容,因此无法将文本分配给它。即使网站已经加载,我还不清楚为什么它不会运行。有任何想法吗?我希望最终将其挂钩到网页上加载的按钮,而不是在加载时自动运行,如果有意义的话。
注意:我没有从头开始创建网站。这是TamperMonkey在Facebook上使用的脚本,因此我无法将其永久加载到网页中。
答案 0 :(得分:1)
你这叫:
span = document.getElementById("data-text");
但是没有任何名为data-text
的ID。
将代码更改为:
span = document.querySelector("[data-text]");
或者将html更改为:
<span id="data-text" data-text="true">TEXT HERE</span>
请注意
id="data-text"
这就是getElementById
正在寻找的内容。