Мне нужно заменить текст внутри моей страницы содержимым из массива.Замените текст разборным HTML из массива
Мой массив содержит 70 wordpais как:
var wordMark = [];
wordMark[0] = ['mytext','<b>my</b>Text'];
wordMark[1] = ['anothertext','<b>another</b>Text'];
wordMark[2] = ['therealtext','Therealtext'];
Моя функция заключается в следующем:
// 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]);
});
};
}
В общем собирается заменить текстовые части с CI-совместимым текстом.
Моя проблема заключается в том, что b-tag не анализируется, а написан в ясном тексте.
Я надеюсь, я Coult объяснить мою проблему, большое спасибо, Сплетник
EDIT: Вот демо:
$(document).ready(function(){
var wordMark = [];
wordMark[0] = ['mytext','<b>my</b>Text'];
wordMark[1] = ['anothertext','<b>another</b>Text'];
wordMark[2] = ['therealtext','therealText'];
// Schriftzüge ersetzen
function setWordMarks() {
for(var wordMarkI=0; wordMarkI<=5; wordMarkI++){
$('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]);
});
};
};
$('span.checkTheText').click(function(){
setWordMarks();
});
});
.checkTheText{
display: block;
margin: 10px;
padding: 5px;
border: 1px solid red;
width: 100px;
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body>
<h2>This is myText</h2>
<div> some lorem ipsum like text including anothertext</div>
<div>No i add TheRealText to give all three examples</div>
<span class="checkTheText">Do the magic</span>
</body>
</html>
Не могли бы вы изменить свой вопрос, чтобы включить демо (с помощью кнопки «Стек Snippet», один с карандашом, чтобы вызвать редактор) , или ссылку на живую демонстрацию в другом месте (например, [JS Fiddle] (http://jsfiddle.net/))? Таким образом, мы чувствуем, что происходит. –
@DavidThomas Я вставляю фрагмент. – Schmoozer