替换如何将每个单词替换一次
Replace How to replace each word once
我有一个xml字典,如下所示。
<word definition="家庭中的主要收入者">养家糊口者</word>lt;word definition="在竞争、竞赛或游戏中获胜或获得成功的人">获胜者</word>
如果我的html中有字典中的单词,该单词将被链接和定义替换为标题。当链接悬停时,用户应该看到定义。
var allwords=xmlDoc.getElementsByTagName("word");for(var i=0;i<allwords.length;i++){var name=allwords[i].lastChild.nodeValue;var链接='<a href="title="+allwords[i].lastChild.nodeValue+':'+allwords[i].getAttribute("definition")+'"gt;'+allwords[i].lastChild.nodeValue+'<a>';}
这是我的替换
函数替换器(oldstring,newsstring){document.body.innerHTML=document.body.nernerHTML.replace(oldstring,newsstring);}
但问题是一旦bread winner更改为链接形式,winner也会更改,因为braad winner包括winner
我在问是否有办法,一旦面包赢家改变赢家
提前感谢!
这样的东西怎么样:
for (var i=0; i<allwords.length; i++)
{
if(allwords[i].firstChild.name == 'a') {
// This word has been linked already, skip it
}
// your code
}
您需要某种哨兵来阻止处理已处理的术语。我建议用另一个元素包装替换后的术语(不清楚html的结构,所以我不确定什么在这里有效,但在普通html中,跨度是最简单的方式)。然后,您的逻辑将跳过替换具有您决定用其包装的任何内容的父元素的单词。
您需要遍历匹配的文本节点,并且只替换那些在DOM中没有A标记的节点作为祖先。
尝试函数strtr($text,$fromList,$toList)。它应该替换每个术语一次。
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- Javascript 正则表达式,只替换一次
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 如何使用replaceWith()一次替换多个选择器
- Node.js一次替换多个字符串
- nodejs:原子文件替换操作,只触发一次一些观察者
- JS - 正则表达式替换在一次调用中发生多次,如何让它运行一次
- 为什么将 ng-select 替换为自定义指令会导致$http请求不会每隔一段时间发送一次
- JS字符串仅替换每隔一次
- JS一次查找和替换多个单词
- 替换仅工作一次
- Javascript的replace()在每次出现时只替换一次
- 只替换一次双引号的最好方法是什么?
- 一次替换大量的绝对链接
- 替换函数只工作一次(javascript)
- 替换如何将每个单词替换一次
- Javascript一次替换多个字符
- JavaScript正则表达式字符串替换只工作一次