首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript文本替换

javascript文本替换
EN

Stack Overflow用户
提问于 2011-10-30 19:12:55
回答 2查看 388关注 0票数 1

我正在使用jquery replaceText plugin。使用这个插件,我可以成功地替换元素的文本,如下所示:

代码语言:javascript
复制
<div>some text to be replaced here.</div>
<script type="text/javascript">
$(function(){
    $("div").replaceText("some text to be replaced here", "a new text for replacement");
})
</script>

但是,当div变成这样时:

代码语言:javascript
复制
<div>some text to be <a href="somelink">replaced</a> here.</div>

更换不起作用。

我该如何继续呢?

EN

回答 2

Stack Overflow用户

发布于 2011-10-30 22:07:30

当操作页面的HTML时,所有的标签都在HTML流中,所以您不能只直接替换文本,而不允许中间的标签。

它与"some text to be replaced here"不匹配,因为该文本字符串不是作为单个文本字符串存在于此HTML中:

代码语言:javascript
复制
div>some text to be <a href="somelink">replaced</a> here.</div>

您必须替换实际作为单独的文本流存在的单独的文本片段,如"some text to be ""replaced"

票数 1
EN

Stack Overflow用户

发布于 2011-10-30 22:25:39

因此,您希望用文本的另一个子集替换文本的子集,并且希望跨节点工作。

看起来你想要个Range

所以你只需要使用document.createRange()创建一个新的Range。让它指向你的内容开始的地方。

所以只要找到开始节点和开始偏移量,然后调用range.setStart(node, offset)。我假设node将是您的容器,而偏移量只是计算出来的。

然后调用range.extractContents()从DOM中删除原始文本。

然后使用range.insertNode(textNode)将下一个文本插入到DOM中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7944577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档