Я пытаюсь изменить цвет части строк. У меня есть список элементов DOM, и для каждого из них текст может содержать некоторые хэштеги. Я хотел бы поместить в цвет все слова хэштегов, которые можно найти в тексте.
Вот начало кода:
var listOfText = document.getElementsByClassName("titleTweet");
for (var nodetext in listOfText) {
var divContent = listOfText[nodetext].innerHTML;
if (divContent.indexOf("#") !== -1) {
// Do job here
}
}
Например, divContent может быть равен " Привет, мои друзья #! Как вы? "
Я хотел бы обновить элементы dom, чтобы добавить красным цветом слово " #friends ".
Я не знаю, как это сделать с помощью javascript или jQuery.
Вы можете использовать регулярное выражение, чтобы найти hastags и обернуть их html. Затем используйте метод.html(), чтобы заменить исходный элемент html на новую строку.
Пример фрагмента
$('#myDiv').replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
Рабочий пример - http://jsfiddle.net/4p4mA/1/
Отредактирован пример работы во всех div на странице.
Примечание. Это будет работать только до тех пор, пока ваш элемент содержит только текст, потому что он заменяет все дочерние узлы своим текстовым значением.
используйте regex для этого, найдите текст, имеющий hashtag, и замените его в теге span для каждого элемента.
$('.titleTweet').each(function(){
var $this=$(this);
$this.html($this.text()
.replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
});
Смотрите демо здесь
.innerHTML
- это плохая основа для начала замены текста. Вы хотите перейти к текстовым узлам и использовать .nodeValue
для получения текста. Затем вы можете начать разделение текстовых узлов.