【发布时间】:2018-01-18 08:34:31
【问题描述】:
对于一个复活节彩蛋,我希望能够用一个常量字符串替换我网页上的每个单词。现有问题的重点是替换某些 词、不包含许多其他元素的元素,或使用 JQuery 等库。应保留结构,即<li>Some text <span>link</span> more text</li> 应变为<li>Lorem Lorem <span>Lorem</span> Lorem Lorem</li>。
如果我这样遍历 DOM:
recur (el) {
if (typeof el === 'undefined') {
el = document.body
}
for (let e of el.childNodes) {
if (e.nodeType === 1) {
recur(e)
} else if (e.nodeType === 3) {
console.log(e)
}
}
}
我得到了很多#text 元素和看起来像字符串的东西。我怎样才能真正改变它们?我尝试分配给父数组中的相应元素,但这不起作用:
Uncaught TypeError: Failed to set an indexed property on 'NodeList': Index property setter is not supported.
修改此类文本节点的父节点的innerHTML属性是否更好?
或者您会推荐一种完全不同的方法吗?纯 CSS 的解决方案也很棒。
【问题讨论】:
-
如果重复使用相同的替换字符串,您可以只计算元素中的单词数,然后将节点
innerHTML设置为许多新单词。 -
克里斯:你的意思是
innerHTML?是的,但相关的元素是什么?如果我有嵌套怎么办<li>Some text <span>link</span> more text</li> -
你能给我们提供一个示例输入和一个示例输出吗?
-
我在问题的第一段中添加了一个。
标签: javascript html css