Jquery 用数组中已解析的HTML替换文本
我必须用数组中的内容替换页面中的文本 我的数组包含70个字,如:Jquery 用数组中已解析的HTML替换文本,jquery,Jquery,我必须用数组中的内容替换页面中的文本 我的数组包含70个字,如: var wordMark = []; wordMark[0] = ['mytext','<b>my</b>Text']; wordMark[1] = ['anothertext','<b>another</b>Text']; wordMark[2] = ['therealtext','Therealtext']; 这是我的文本 一些类似lorem i
var wordMark = [];
wordMark[0] = ['mytext','<b>my</b>Text'];
wordMark[1] = ['anothertext','<b>another</b>Text'];
wordMark[2] = ['therealtext','Therealtext'];
这是我的文本
一些类似lorem ipsum的文本,包括其他文本
不,我添加课文来给出所有三个示例
施展魔法
您可以对其使用正则表达式: jQuery HTML
您是否可以编辑您的问题以包含一个实时演示?例如,使用带铅笔的“Stack Snippet”按钮打开编辑器,或指向其他地方的实时演示的链接?这样我们就可以感觉到发生了什么。@DavidThomas我插入了代码段。问题不是替换,这对代码很有效。问题是,被替换的文本没有被解析,所以我在页面上的文本是另一个文本,而不是另一个文本。我不知道为什么。也许你应该用解析器解析文本。无论如何,我的代码是有效的。您的代码在“我的代码到”时有效,但仅替换wordMark[i][0]的第一次出现。我应该在我的请求中提到,数组中的每个词至少出现3次。而且:即使它是一个div的类名,它也会替换这个词。。。这就是为什么我想从我的示例中使用基于节点的脚本…但是您可以修改regex,以排除class=wordmark\u元素
// Schriftzüge ersetzen
function setWordMarks() {
//for(var wordMarkI=0; wordMarkI<=wordMark.length-1; wordMarkI++){
for(var wordMarkI=0; wordMarkI<=5; wordMarkI++){
//alert(wordMark[wordMarkI][0]);
$('body, body *')
.contents()
.filter(function() {
return this.nodeType == Node.TEXT_NODE
&& this.nodeValue.toLowerCase().indexOf(wordMark[wordMarkI][0]) >= 0;
}).each(function() {
this.nodeValue = this.nodeValue.toLowerCase().replace(wordMark[wordMarkI][0], wordMark[wordMarkI][1]);
});
};
}
<script type="text/javascript">
$(function() {
var wordMark = [];
wordMark[0] = ['mytext', '<b>my</b>Text'];
wordMark[1] = ['anothertext', '<b>another</b>Text'];
wordMark[2] = ['therealtext', 'Therealtext'];
var content = $('#content').html();
for (i=0; i < wordMark.length; i++) {
var pattern = wordMark[i][0];
var regExp = new RegExp(pattern, "i");
content = content.replace(regExp, wordMark[i][1]);
}
$('#content').html(content);
});
</script>
<div id="content">
This is mytext and there are anothertext so therealtext is ok.
</div>