gpt4 book ai didi

javascript - 火狐/XHTML : creating and appending nodes

转载 作者:行者123 更新时间:2023-11-30 13:38:21 25 4
gpt4 key购买 nike

我正在尝试用符合 DOM 的节点内容替换代码中的一堆 innerHTML 引用。

<html>
<body>hehe</body>
<script type="text/javascript">
var myDiv = document.createElement('div');
myDiv.setAttribute('id', 'myDivID');
document.getElementsByTagName('body')[0].appendChild(myDiv);
var textNode = '<p>This will be dynamically generated.</p>';
myDiv.appendChild(textNode);
</script>
</html>

当然,脚本不应该在正文下方,但如果我将它放在正文上方,javascript 会返回错误:

document.getElementsByTagName("body")[0] is undefined

因为 body 还不存在。

但就像现在一样,javascript 在“appendChild”步骤中返回了更深奥的错误:

uncaught exception:
[Exception... "Could not convert JavaScript argument arg 0 [nsIDOMHTMLDivElement.appendChild]"
nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)"
location: "JS frame :: .....TestStuff/wut.jsp :: <TOP_LEVEL> :: line 8"
data: no]

那么,这是怎么回事?您可以用 getElementById 引用替换 myDiv.setAttributemyDiv.appendChild 行,结果是一样的。

编辑:抱歉,以上错误是 firefox 的,不是 chrome 的。 Chrome 错误是: Uncaught Error :NOT_FOUND_ERR:DOM 异常 8在 myDiv.appendChild 行。我不明白为什么 myDiv 此时不在 DOM 上,但 chrome 似乎不这么认为。

编辑 2:所以,这一行:

var textNode = '<p>This will be dynamically generated.</p>';

如果做成

var textNode = document.createTextNode('< p>This will be dynamically generated.< /p>');

将正确输出文本。但是,我想知道如何生成和附加将输出为实际标记而不是纯文本的 html block ——本质上可以模拟 innerHTML 的东西。

最佳答案

var textNode = '<p>This will be dynamically generated.</p>';
myDiv.appendChild(textNode);

您需要创建 <p>元素和它里面的文本作为不同的节点。这应该是:

var paragraph = document.createElement('p');
var textNode = document.createTextNode('This will be dynamically generated.');

paragraph.appendChild(textNode);
myDiv .appendChild(paragraph);

假设您真的想要 <p>...</p>元素。如果你可以不用它,那么只需创建文本节点并将其附加到 myDiv .

关于javascript - 火狐/XHTML : creating and appending nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com