同一个选择器上的多个.replace()似乎是冲突的

时间:2014-04-21 04:22:41

标签: javascript jquery replace

我计划改变文字中关键词的颜色,并使用多个.replace()  调用相同的元素。

var $hotPinkList = [
"html",
"head",
"title",
"body",];

for (i = 0; i < $hotPinkList.length; i++) {
    $("code").html(function (_, html) {
        var rep = $hotPinkList[i];
        var regex = new RegExp(rep, 'g');
        return html.replace(regex, '<span style="color:#f92772;">' + $hotPinkList[i] + '</span>');
    });
}

$('code').html($('code').html().replace(/3noClr/g, '').replace(/".*?"/g, '<span style="color:red;">$&</span>'));

似乎以一种奇怪的方式相互冲突。 style =&#34;颜色:#f92772;&#34;正在被添加到字符串中,并且在它们组合时不被视为html命令

这有效:http://jsfiddle.net/D2vQ6/

这有效:http://jsfiddle.net/vQdg7/

但 这不起作用:http://jsfiddle.net/uE8qa/

1 个答案:

答案 0 :(得分:1)

正则表达式/".*?"/<span style="color:#f92772;">循环中创建的for中的引号相匹配,因此替换正在将其转换为<span style=<span style="color:red;">"color:#f92772;"</span>>。这不是有效的HTML。

您可能需要将替换限制为文本节点,而不是HTML标记。