Javascript:Replace在更改颜色后检测字符串并替换div中的html

Javascript:Replace在更改颜色后检测字符串并替换div中的html,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正试图改变一部分字符串的颜色。我有一个DOM元素列表,对于每个元素,文本可以包含一些hashtag。我想把所有可以在文本中找到的hashtags单词都涂上颜色 以下是代码的开头: var listOfText = document.getElementsByClassName("titleTweet"); for (var nodetext in listOfText) { var divC

我正试图改变一部分字符串的颜色。我有一个DOM元素列表,对于每个元素,文本可以包含一些hashtag。我想把所有可以在文本中找到的hashtags单词都涂上颜色

以下是代码的开头:

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实现这一点。

。innerHTML
对于开始替换文本来说是一个糟糕的基础。您需要向下导航到文本节点,并使用
.nodeValue
获取文本。然后可以开始拆分文本节点。

。innerHTML
对于开始替换文本来说是一个很差的基础。您需要向下导航到文本节点,并使用
.nodeValue
获取文本。然后可以开始拆分文本节点。

。innerHTML
对于开始替换文本来说是一个很差的基础。您需要向下导航到文本节点,并使用
.nodeValue
获取文本。然后可以开始拆分文本节点。

。innerHTML
对于开始替换文本来说是一个很差的基础。您需要向下导航到文本节点,并使用
.nodeValue
获取文本。然后,您可以开始拆分文本节点。

您可以使用regexp查找hastags并用html包装它们。然后使用.html()方法用新字符串替换原始元素的html

示例代码段

$('#myDiv').replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
$('#myDiv')。替换(/#[a-z0-1A-Z]+/g,'$&');
工作示例-

编辑示例以处理页面上的所有div


注意:这只在元素只包含文本时有效,因为它将用文本值替换所有子节点。

您可以使用regexp查找hastags并用html包装它们。然后使用.html()方法用新字符串替换原始元素的html

示例代码段

$('#myDiv').replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
$('#myDiv')。替换(/#[a-z0-1A-Z]+/g,'$&');
工作示例-

编辑示例以处理页面上的所有div


注意:这只在元素只包含文本时有效,因为它将用文本值替换所有子节点。

您可以使用regexp查找hastags并用html包装它们。然后使用.html()方法用新字符串替换原始元素的html

示例代码段

$('#myDiv').replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
$('#myDiv')。替换(/#[a-z0-1A-Z]+/g,'$&');
工作示例-

编辑示例以处理页面上的所有div


注意:这只在元素只包含文本时有效,因为它将用文本值替换所有子节点。

您可以使用regexp查找hastags并用html包装它们。然后使用.html()方法用新字符串替换原始元素的html

示例代码段

$('#myDiv').replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
$('#myDiv')。替换(/#[a-z0-1A-Z]+/g,'$&');
工作示例-

编辑示例以处理页面上的所有div


注意:这只在元素仅包含文本时有效,因为它将用文本值替换所有子节点。

为此使用正则表达式,找到具有哈希标记的文本,并在每个元素的span标记中重新保存该文本

$('.titleTweet').each(function(){
    var $this=$(this);
$this.html($this.text()
                .replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
});
$('.titleTweet')。每个(函数(){
var$this=$(this);
$this.html($this.text()
.更换(/#[a-z0-1A-Z]+/g,“$&”);
});

请参见演示

为此使用正则表达式,查找具有哈希标记的文本,并在每个元素的span标记中重新保存该文本

$('.titleTweet').each(function(){
    var $this=$(this);
$this.html($this.text()
                .replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
});
$('.titleTweet')。每个(函数(){
var$this=$(this);
$this.html($this.text()
.更换(/#[a-z0-1A-Z]+/g,“$&”);
});

请参见演示

为此使用正则表达式,查找具有哈希标记的文本,并在每个元素的span标记中重新保存该文本

$('.titleTweet').each(function(){
    var $this=$(this);
$this.html($this.text()
                .replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
});
$('.titleTweet')。每个(函数(){
var$this=$(this);
$this.html($this.text()
.更换(/#[a-z0-1A-Z]+/g,“$&”);
});

请参见演示

为此使用正则表达式,查找具有哈希标记的文本,并在每个元素的span标记中重新保存该文本

$('.titleTweet').each(function(){
    var $this=$(this);
$this.html($this.text()
                .replace(/#[a-z0-1A-Z]+/g, '<span style="color: red;">$&</span>'));
});
$('.titleTweet')。每个(函数(){
var$this=$(this);
$this.html($this.text()
.更换(/#[a-z0-1A-Z]+/g,“$&”);
});


请参见演示

将任何内联块标记内的特定子字符串包装为span,这是任何内联块标记内的常规ideawrap特定子字符串包装为span,这是任何内联块标记内的常规ideawrap特定子字符串包装为span,这是任何内联块标记内的常规ideawrap特定子字符串包装为span,这是通用的ideaIt,但仅适用于JQuery找到的第一个元素。我怎样才能对所有id都这样做?你用什么来存储文本?不同的选择器将使您可以替换不同的元素$例如,('div')匹配页面上的所有div,或者$('div.hashtag')匹配具有类hashtag的所有div。id表示为唯一值。jQuery尊重这一点,因此当您尝试匹配和id(“#text”)时,它将只返回找到的第一个。如果您将id更改为类并更新了选择器,那么这将起作用。你应该尽量使你的选择器尽可能具体,这样你就不会错配东西了。示例:啊,是的。非常感谢您的解释它可以工作,但只适用于JQuery找到的第一个元素。我怎样才能对所有id都这样做?你用什么来存储文本?不同的选择器将使您可以替换不同的元素$例如,('div')匹配页面上的所有div,或者$('div.hashtag')匹配具有类hashtag的所有div。id表示为唯一值。jQuery尊重这一点,因此当您尝试匹配和id(“#text”)时,它将只返回找到的第一个。如果将id更改为类并更新了选择器,则