Javascript 突出显示html文档中的文本
我是网络开发新手。这里,我想突出显示html文档中的文本。我使用Javascript 突出显示html文档中的文本,javascript,css,angularjs,html,Javascript,Css,Angularjs,Html,我是网络开发新手。这里,我想突出显示html文档中的文本。我使用text显示html文档。假设这是一份文件: <!DOCTYPE html> <html> <head> <title>Example of Text Highlight</title> <style type="text/css" media="screen">
text
显示html文档。假设这是一份文件:
<!DOCTYPE html>
<html>
<head>
<title>Example of Text Highlight</title>
<style type="text/css" media="screen">
.highlight{ background: #D3E18A;}
.light{ background-color: yellow;}
</style>
</head>
<body>
<div id="testDocument">
<p style="padding:0;color:#000000;font-size:12pt;line-height:1.0;margin-right:0;margin-left:72pt;text-indent:-72pt;font-family:"Times New Roman";margin-top:0;orphans:2;margin-bottom:0;widows:2;text-align:justify"><span style="vertical-align:baseline;font-size:11pt;font-family:"Calibri";font-weight:700">Description: </span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Calibri";font-style:normal">Developed web app for add management.</span></p>
<span style="vertical-align:baseline;font-size:11pt;font-family:"Calibri";font-weight:700">Contribution: </span><span style="vertical-align:baseline;font-size:11pt;font-family:"Calibri";font-weight:400">It was the internal use web app for the <br>we developed the app for the add management for the. </span>
</div>
</body>
</html>
在这里,我能够突出显示本文中的一个单词。我想要的是突出显示整个文本,比如从描述到作为输入的单词。我尝试了不同的选择,比如
目前,我有以下代码,它使用这些代码突出显示一个span
中的文本。但是,如果突出显示文本的一半在一个跨距中,另一半在另一个跨距中,则它不起作用
代码如下:
var InstantSearch = {
"highlight": function (container, highlightText)
{
var internalHighlighter = function (options)
{
var id = {
container: "container",
tokens: "tokens",
all: "all",
token: "token",
className: "className",
sensitiveSearch: "sensitiveSearch"
},
tokens = options[id.tokens],
allClassName = options[id.all][id.className],
allSensitiveSearch = options[id.all][id.sensitiveSearch];
function checkAndReplace(node, tokenArr, classNameAll, sensitiveSearchAll)
{
var nodeVal = node.nodeValue, parentNode = node.parentNode,
i, j, curToken, myToken, myClassName, mySensitiveSearch,
finalClassName, finalSensitiveSearch,
foundIndex, begin, matched, end,
textNode, span, isFirst;
for (i = 0, j = tokenArr.length; i < j; i++)
{
curToken = tokenArr[i];
myToken = curToken[id.token];
myClassName = curToken[id.className];
mySensitiveSearch = curToken[id.sensitiveSearch];
finalClassName = (classNameAll ? myClassName + " " + classNameAll : myClassName);
finalSensitiveSearch = (typeof sensitiveSearchAll !== "undefined" ? sensitiveSearchAll : mySensitiveSearch);
isFirst = true;
while (true)
{
if (finalSensitiveSearch)
foundIndex = nodeVal.indexOf(myToken);
else
foundIndex = nodeVal.toLowerCase().indexOf(myToken.toLowerCase());
if (foundIndex < 0)
{
if (isFirst)
break;
if (nodeVal)
{
textNode = document.createTextNode(nodeVal);
parentNode.insertBefore(textNode, node);
} // End if (nodeVal)
parentNode.removeChild(node);
break;
} // End if (foundIndex < 0)
isFirst = false;
begin = nodeVal.substring(0, foundIndex);
matched = nodeVal.substr(foundIndex, myToken.length);
if (begin)
{
textNode = document.createTextNode(begin);
parentNode.insertBefore(textNode, node);
} // End if (begin)
span = document.createElement("span");
span.className += finalClassName;
span.appendChild(document.createTextNode(matched));
parentNode.insertBefore(span, node);
nodeVal = nodeVal.substring(foundIndex + myToken.length);
} // Whend
} // Next i
}; // End Function checkAndReplace
function iterator(p)
{
if (p === null) return;
var children = Array.prototype.slice.call(p.childNodes), i, cur;
if (children.length)
{
for (i = 0; i < children.length; i++)
{
cur = children[i];
if (cur.nodeType === 3)
{
checkAndReplace(cur, tokens, allClassName, allSensitiveSearch);
}
else if (cur.nodeType === 1)
{
iterator(cur);
}
}
}
}; // End Function iterator
iterator(options[id.container]);
} // End Function highlighter
;
internalHighlighter(
{
container: container
, all:
{
className: "highlighter"
}
, tokens: [
{
token: highlightText
, className: "highlight"
, sensitiveSearch: false
}
]
}
); // End Call internalHighlighter
} // End Function highlight
};
function TestTextHighlighting(highlightText)
{
var container = document.getElementById("textcontent");
InstantSearch.highlight(container, highlightText);
}
var InstantSearch={
“highlight”:函数(容器、highlightText)
{
var internalHighlighter=功能(选项)
{
变量id={
容器:“容器”,
代币:“代币”,
全部:“全部”,
令牌:“令牌”,
类名:“类名”,
敏感搜索:“敏感搜索”
},
令牌=选项[id.tokens],
allClassName=选项[id.all][id.className],
allSensitiveSearch=选项[id.all][id.sensitiveSearch];
函数检查和替换(节点、令牌arr、classNameAll、sensitiveSearchAll)
{
var nodeVal=node.nodeValue,parentNode=node.parentNode,
i、 j,curToken,myToken,myClassName,mySensitiveSearch,
finalClassName,finalSensitiveSearch,
查找索引,开始,匹配,结束,
textNode,span,isFirst;
对于(i=0,j=tokenArr.length;i
我该如何处理这个问题呢?的确,我已经了解了你的问题,但你问题的核心是如何突出一些称为段落的文本。像这样
也许你可以试试这个,这是使用jquery.mark,你可以通过关键词突出显示你想要的文本。我希望这对你有帮助
以下是简单的用法:
$(".context").mark("keyword");
你能添加一些有效的HTML内容吗?你是怎么打电话来的
$(".context").mark("keyword");