Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML关键字突出显示 Lorem Ipsum只是需要高亮显示的伪类高亮显示文本类。_Javascript_Html_Css - Fatal编程技术网

Javascript HTML关键字突出显示 Lorem Ipsum只是需要高亮显示的伪类高亮显示文本类。

Javascript HTML关键字突出显示 Lorem Ipsum只是需要高亮显示的伪类高亮显示文本类。,javascript,html,css,Javascript,Html,Css,我想突出“班级突出”和“班级” var words=[“类突出显示”,“类”]; 变量替换=“$1”; var x=document.getElementById(“abc”).innerHtml; 对于(var i=0;i这将更好地工作: var words = ["class highlight", "class"]; var replace = '<span class="highlight-text">$1</span>'; var x = document.ge

我想突出“班级突出”和“班级”

var words=[“类突出显示”,“类”];
变量替换=“$1”;
var x=document.getElementById(“abc”).innerHtml;

对于(var i=0;i这将更好地工作:

var words = ["class highlight", "class"];
var replace = '<span class="highlight-text">$1</span>';
var x = document.getElementById("abc").innerHtml;

for(var i = 0; i<words.length; i++){
    document.getElementById("abc").innerHtml.replace(pattern, replace);
}
var words=[“类突出显示”,“类”];
变量替换=“$1”;
var x=document.getElementById(“abc”).innerHtml;
对于(var i=0;i
var words=[“class”,“class highlight”];
//replace reg exp将分为3个部分
var replace='$1$2$3';
//需要较长的单词出现在较小的单词之前
sort(函数(a,b){返回b.length>a.length;});
//我们用一个或一个表达式来代替这些词
var re=new RegExp(“([$\\s])(“+words.join”([\\s^])”,“gi”);
var elem=document.getElementById(“abc”);
//抓取文本,因为HTML上的匹配不好
var txt=elem.innerText | | elem.textContent;
//制作新字符串
var replacedText=txt.replace(re,replace);
elem.innerHTML=replacedText;

类似主题:您发布的代码毫无意义。
模式是什么,它与
单词有什么关系。长度
?应该有一种方法可以做到这一点而不循环,从而解决问题。在jQuery中,您可以使用.text()与获取字符串的innerHTML不同,您也没有将
replace
的结果分配给任何内容。我认为人们忽略了真正的问题:他试图突出显示多个单词(因此循环),但第二个单词是“class”,这导致了前面突出显示替换文本中的“class”(“这行不通。他正在解决的问题是,他第二次运行代码时,代码也会替换html标记中的内容。
var words = ["class highlight", "class"];
var replace = '<span class="highlight-text">$1</span>';
var x = document.getElementById("abc").innerHtml;

for(var i = 0; i<words.length; i++){
    document.getElementById("abc").innerHtml.replace(pattern, replace);
}
var words = ["class highlight", "class"];
var replace = '<span class="highlight-text">$1</span>';
var x = document.getElementById("abc").innerHtml;

for(var i = 0; i<words.length; i++){
    var rpl = replace.replace('$1', words[i]);
    document.getElementById("abc").innerHtml.replace(words[i], rpl);
}
var words = [ "class", "class highlight"];

//replace reg exp will be in 3 parts
var replace = '$1<span class="highlight-text">$2</span>$3';

//need the longer words to appear before the smaller
words.sort(function(a,b){ return b.length>a.length; });  

//us an OR expression to replace the words
var re = new RegExp("([$\\s])(" + words.join("|") + ")([\\s^])","gi");


var elem = document.getElementById("abc");

//grab the text since matching on HTML is bad
var txt = elem.innerText || elem.textContent;

//make the new string
var replacedText = txt.replace(re, replace);

elem.innerHTML = replacedText;