Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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高亮/非高亮单词_Javascript_Html - Fatal编程技术网

Javascript高亮/非高亮单词

Javascript高亮/非高亮单词,javascript,html,Javascript,Html,我需要在HTML页面中突出显示某个单词。我已成功高亮显示元素,但如果搜索新词,我还需要取消高亮显示前一个词。我试过这个,highlight有效,但在un highlight无效。 取消高亮部分应取消高亮显示包含span id='highlight'…等的任何行,但不取消高亮显示当前单词(!word) //取消高亮显示上一个搜索的单词 var regex_old=new RegExp(\“!\”+word+\“\”,'gi') var str_replace_old=word; block.inn

我需要在HTML页面中突出显示某个单词。我已成功高亮显示元素,但如果搜索新词,我还需要取消高亮显示前一个词。我试过这个,highlight有效,但在un highlight无效。 取消高亮部分应取消高亮显示包含span id='highlight'…等的任何行,但不取消高亮显示当前单词(!word)

//取消高亮显示上一个搜索的单词
var regex_old=new RegExp(\“!\”+word+\“\”,'gi')
var str_replace_old=word;
block.innerHTML=block.innerHTML.replace(regex\u old,str\u replace\u old);
//突出显示新单词
var regex=新的RegExp(单词“gi”);
var str_replace=\“\”+word+\“\”;
block.innerHTML=block.innerHTML.replace(regex,str_replace);
谢谢。

您可以将一个类(例如:class=“.current”)添加到高亮显示的当前范围。 在突出显示新单词的同时,检查类是否有“.current”不突出显示并删除该类!!并将该类添加到新的高亮显示的范围


以便您可以识别当前高亮显示的单词,以便取消高亮显示

使用正则表达式来标识搜索字符串并在其周围加上一个span是有意义的,但取消高亮显示时不需要这样做。简单地删除类以指示它高亮显示就可以了。顺便说一下,ID应该是一个唯一的属性,所以使用类来表示“highlight”更合适。从所有范围中删除highlight类后,搜索新字符串并为其指定highlight范围。

ID应仅应用于1个标记。请改用类。
//Unhighlight the previous searched word
var regex_old = new RegExp(\"<span id='highlight'><font style='background-color:#ffff00'>!\"+word+\"</font></span>\", 'gi')
var str_replace_old = word;
block.innerHTML = block.innerHTML.replace(regex_old, str_replace_old);

// Highlight the new word
var regex = new RegExp(word, 'gi');
var str_replace = \"<span id='highlight'><font style='background-color:#ffff00'>\"+word+\"</font></span>\";
block.innerHTML = block.innerHTML.replace(regex, str_replace);