提问人:U. Windl 提问时间:10/30/2023 最后编辑:Mark RotteveelU. Windl 更新时间:11/16/2023 访问量:47
将“<span>”替换为文本节点:是程序员错误还是浏览器错误?
Replacing `<span>`with text node: Is it a programmer error, or a browser error?
问:
我正在尝试替换我的 HTML 中的一些占位符,这些占位符看起来像.使用以下 JavaScript 代码仅替换了第一次出现,我想知道为什么:<span id="Something" />
function set_placeholder(cls, txt)
{
txt = document.createTextNode(txt);
for (var e of document.getElementsByClassName(cls)) {
e.parentNode.replaceChild(txt, e);
}
}
替换后,集合似乎无法找到下一个匹配项。span
因此,我尝试使用以下变体插入文本:
function set_placeholder(cls, txt)
{
for (var e of document.getElementsByClassName(cls)) {
e.innerText = txt;
}
}
现在所有出现的情况都被替换了,这让我怀疑是我的错,还是浏览器(Firefox 102)的错,当第一个变体失败时。
HTML 示例
实际的 HTML 要复杂得多,但这里有一些示例:
<html>
<p><span class="ph-customer" /> bestellte am <span class="ph-customer-date" /> folgende Artikel:</p>
<!-- ... -->
<table>
<tr>
<td><span class="ph-customer-date" />,
<span class="ph-customer-name" /></td>
</tr>
</table>
<!-- ... -->
</html>
例如,出现两次,但调用只会替换第一次出现。ph-customer-date
set_placeholder('ph-customer-date', '30.12.2023')
答: 暂无答案
评论
Warning: If the new node is already present somewhere else in the DOM, it is first removed from that position.
document.createTextNode(txt)
span