**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
1年前关闭。
截至22小时前,社区正在审查是否重新讨论这个问题。
Improve this question
假设我在论坛上有一些HTML:
<div class="sign">username <span class="info">info</span></div>
我想编写一个用户脚本,将其更改为如下形式:
<div class="sign"><a itemprop="creator">username</a> <span class="info">info</span></div>
(The a
元素也将具有href
。我有意省略了它以使代码更短。)
我知道如何创建a
元素,为它分配一个自定义属性,并将它添加到DOM中。
但是我不明白如何用它来 Package username
,也就是说,如何将第一个代码段中的username
转换为第二个代码段中的<a itemprop="creator">username</a>
。
4条答案
按热度按时间roejwanj1#
使用普通DOM API做这件事有点复杂,但并不太难。您需要找到包含要替换的片段的DOM文本节点,将其拆分为三部分,然后用所需的节点替换中间部分。
如果您有一个文本节点
textNode
,并且希望将从索引i
到索引j
的文本替换为由replacer
计算的节点,则可以使用以下函数:修改你的例子,你将不得不这样使用它:
x一个一个一个一个x一个一个二个x
注意在注入"username"链接之后,"clickmetoo"处理程序仍然附加到链接上;修改
innerHTML
将不能保持这一点。slhcrj9b2#
您可以尝试更换
innerHTML
:kb5ga3dv3#
这边吗?
wnavrhmk4#
找到所有包含类
.sign
的元素,并在span
标记之前用a
Package 文本替换其内部HTML。有时候,使用一点正则表达式就能挽救局面。
如果要保留附加到跨度元素的事件-