如何使用javascript将单词替换为超链接?
我想在我的网站上的每一篇帖子上用超链接替换一个词(仅1次),以我的例子就是“罗纳尔多”。因此,我使用了以下代码如何使用javascript将单词替换为超链接?,javascript,html,jquery,css,ajax,Javascript,Html,Jquery,Css,Ajax,我想在我的网站上的每一篇帖子上用超链接替换一个词(仅1次),以我的例子就是“罗纳尔多”。因此,我使用了以下代码 document.body.innerHTML = document.body.innerHTML.replace('Ronaldo', '<a href="www.ronaldo.com">Ronaldo</a>'); document.body.innerHTML=document.body.innerHTML.replace('罗纳尔
document.body.innerHTML = document.body.innerHTML.replace('Ronaldo', '<a href="www.ronaldo.com">Ronaldo</a>');
document.body.innerHTML=document.body.innerHTML.replace('罗纳尔多','');
在我注意到这个问题之前,这确实很有效
它甚至在文章标题
中替换了“罗纳尔多”这个词,而我只想让它替换文章正文
中的这个词
这里是我的代码的一瞥,这样您可以更好地理解
[更新]
如果有人提出一种解决这个问题的方法,那将非常有帮助。我之所以标记jquery和ajax,是因为它们也知道javascript
注意:到目前为止,我们没有使用任何类、ID和标记,比如
POST-BODY
p
,除了POST-TITLE
用于格式化之外假设您的POST-BODY
元素没有任何类名,我们可以使用.getElementsByTagName()
查询它们,然后用链接替换文本
postBodyElems=document.getElementsByTagName(“p”);
对于(变量i=0;i
。文章标题{
字体大小:20px;
}
.警告{
颜色:红色;
}
a{
颜色:蓝色;
}
罗纳尔多成为2020年最炙手可热的球员
罗纳尔多(我想把这段文字变成超链接)多斯桑托斯·阿维罗·戈伊·康姆(葡萄牙语发音:kɾIʃtjɐnuʁɔnaɫdu),生于1985年2月5日)是一名葡萄牙职业足球运动员,在意甲担任前锋
尤文图斯俱乐部,葡萄牙国家队队长。罗纳尔多经常被认为是世界上最好的球员,也被广泛认为是有史以来最伟大的球员之一,他赢得了五项金球奖[注3]和四项欧洲金靴奖,
这两项都是欧洲球员的记录。他在职业生涯中赢得了30座主要奖杯,包括7座联赛冠军、5座欧洲冠军联赛冠军、1座欧洲冠军联赛冠军和1座欧洲联盟国家联赛冠军。罗纳尔多保持着世界纪录
欧洲冠军联赛历史上进球最多(134个)和助攻最多(41个)。[11]他是少数几个职业生涯出场次数超过1000次的有记录球员之一,为俱乐部和国家队打进了750多个职业生涯进球。[12]
他也是第二个打进100个国际比赛进球的球员,也是第一个实现这一壮举的欧洲人。[13]
你需要使用replaceAll
而不是replace
document.body.innerHTML = document.body.innerHTML.replaceAll('Ronaldo', '<a href="https://en.wikipedia.org/wiki/Cristiano_Ronaldo">Cristiano Ronaldo</a>');
如果您不想更改classpost title
中的文本,可以使用not
查询选择器-
document.querySelector("p:not(.post-title)").innerHTML =
document.querySelector("p:not(.post-title)").innerHTML.replaceAll('Ronaldo', '<a href="https://en.wikipedia.org/wiki/Cristiano_Ronaldo">Cristiano Ronaldo</a>');
document.querySelector(“p:not(.post title)”)。innerHTML=
document.querySelector(“p:not(.post title)”).innerHTML.replaceAll('罗纳尔多','');
这将只选择第一个p
,它没有类post title
如果您不仅仅有p
标记,那么请使用querySelectorAll
然后迭代该标记以替换文本
或者,您可以向内容添加不同的类,并在查询选择器中使用该类。如果不想更改整个文档,请不要从DOM中获取整个内容。你说你只是想换个帖子的主体。所以给帖子主体一个id(这样我们就可以在js中抓取帖子主体)并只更改它的内容 注意:要替换所有出现的“罗纳尔多”,请使用
replaceAll(“word To replace”)
函数
document.getElementById(“post body”).innerHTML=document.getElementById(“post body”).innerHTML.replaceAll('罗纳尔多','')代码>
。文章标题{
字体大小:20px;
}
.警告{
颜色:红色;
}
a{
颜色:蓝色;
}
罗纳尔多成为2020年最炙手可热的球员
罗纳尔多[我想把这段文字变成超链接]dos Santos Aveiro GOIH ComM(葡萄牙语发音:[kɾIʃˈtjɐnuʆˈnaɫdu],生于1985年2月5日)是一名葡萄牙职业足球运动员,在意甲担任前锋
尤文图斯俱乐部,葡萄牙国家队队长。罗纳尔多经常被认为是世界上最好的球员,也被广泛认为是有史以来最伟大的球员之一,他赢得了五项金球奖[注3]和四项欧洲金靴奖,
这两项都是欧洲球员的记录。他在职业生涯中赢得了30座主要奖杯,包括7座联赛冠军、5座欧洲冠军联赛冠军、1座欧洲冠军联赛冠军和1座欧洲联盟国家联赛冠军。罗纳尔多保持着世界纪录
欧洲冠军联赛历史上进球最多(134个)和助攻最多(41个)。[11]他是少数几个职业生涯出场次数超过1000次的有记录球员之一,为俱乐部和国家队打进了750多个职业生涯进球。[12]
他也是第二个在国际比赛中打进100粒进球的球员,也是第一个实现这一壮举的欧洲人。[13]
只要改变就行了
文件正文
到
document.getElementById(“ID”)//相应的元素ID,即您的段落
document.getElementById(“post body”).innerHTML=document.getElementById(“post body”).innerHTML.replaceAll('罗纳尔多','')代码>
。文章标题{
字体大小:20px;
}
.警告{
颜色:红色;
}
a{
颜色:蓝色;
}
罗纳尔多成为2020年最炙手可热的球员
罗纳尔多[我想把这段文字变成一个超链接]多斯桑托斯·阿维罗·戈伊·康姆(葡萄牙语发音:[kɾIʃˈtjɐnuʆˈnaɫdu];生于1985年2月5日)是一名葡萄牙职业足球运动员,在意甲俱乐部尤文图斯担任前锋,并担任葡萄牙国家队队长。罗纳尔多经常被认为是世界上最好的球员,也被广泛认为是有史以来最伟大的球员之一,他赢得了五项金球奖[注3]和四项欧洲金靴奖,
document.querySelector("p:not(.post-title)").innerHTML =
document.querySelector("p:not(.post-title)").innerHTML.replaceAll('Ronaldo', '<a href="https://en.wikipedia.org/wiki/Cristiano_Ronaldo">Cristiano Ronaldo</a>');