最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js 關(guān)鍵詞高亮(根據(jù)ID/tag高亮關(guān)鍵字)案例介紹

 更新時間:2013年01月21日 09:09:54   作者:  
關(guān)鍵詞高亮在開發(fā)中會帶來很多的方便,關(guān)鍵詞高亮包括:根據(jù)ID高亮關(guān)鍵字/根據(jù)Tag名高亮關(guān)鍵字等等,感興趣的朋友可以了解下,希望本文對你有所幫助
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JS 關(guān)鍵詞高亮</title>
<script type="text/javascript">
/*
* 參數(shù)說明:
* obj: 對象, 要進(jìn)行高亮顯示的html標(biāo)簽節(jié)點.
* hlWords: 字符串, 要進(jìn)行高亮的關(guān)鍵詞詞, 使用 豎杠(|)或空格分隔多個詞 .
* bgColor: 背景顏色,默認(rèn)為紅色.
*/
function MarkHighLight(obj, hlWords, bgColor) {
hlWords = AnalyzeHighLightWords(hlWords);
if (obj == null || hlWords.length == 0)
return;
if (bgColor == null || bgColor == "") {
bgColor = "red";
}
MarkHighLightCore(obj, hlWords);
//執(zhí)行高亮標(biāo)記的核心方法
function MarkHighLightCore(obj, keyWords) {
var re = new RegExp(keyWords, "i");
var style = ' style="background-color:' + bgColor + ';" '
for (var i = 0; i < obj.childNodes.length; i++) {
var childObj = obj.childNodes[i];
if (childObj.nodeType == 3) {
if (childObj.data.search(re) == -1) continue;
var reResult = new RegExp("(" + keyWords + ")", "gi");
var objResult = document.createElement("span");
objResult.innerHTML = childObj.data.replace(reResult, "<span" + style + ">$1</span>");
if (childObj.data == objResult.childNodes[0].innerHTML) continue;
obj.replaceChild(objResult, childObj);
} else if (childObj.nodeType == 1) {
MarkHighLightCore(childObj, keyWords);
}
}
}
//分析關(guān)鍵詞
function AnalyzeHighLightWords(hlWords) {
if (hlWords == null) return "";
hlWords = hlWords.replace(/\s+/g, "|").replace(/\|+/g, "|");
hlWords = hlWords.replace(/(^\|*)|(\|*$)/g, "");
if (hlWords.length == 0) return "";
var wordsArr = hlWords.split("|");
if (wordsArr.length > 1) {
var resultArr = BubbleSort(wordsArr);
var result = "";
for (var i = 0; i < resultArr.length; i++) {
result = result + "|" + resultArr[i];
}
return result.replace(/(^\|*)|(\|*$)/g, "");
} else {
return hlWords;
}
}
//利用冒泡排序法把長的關(guān)鍵詞放前面
function BubbleSort(arr) {
var temp, exchange;
for (var i = 0; i < arr.length; i++) {
exchange = false;
for (var j = arr.length - 2; j >= i; j--) {
if ((arr[j + 1].length) > (arr[j]).length) {
temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp;
exchange = true;
}
}
if (!exchange) break;
}
return arr;
}
}
//end
function search() {
var obj = document.getElementById("waiDiv");
var keyWord = document.getElementById("keyWord");
MarkHighLight(obj, keyWord.value, "Orange");
}
</script>
</head>
<body>
<div id="waiDiv">
<input type="text" id="keyWord" />
<input type="button" value="搜索" onclick="search()" /><br />
<br />
<div id="contentDiv">
二貨朋友玩游戲被騙1200塊,報警后被告知不夠2000沒辦法立案。強大的二貨又往那個賬號寄了800塊。你說那騙子是開心呢?還是開心極了呢。
</div>
</div>
</body>
</html>

改進(jìn)版
復(fù)制代碼 代碼如下:

function highlightWord(node, word) {
// Iterate into this nodes childNodes
if (node.hasChildNodes) {
var hi_cn;
for (hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) {
highlightWord(node.childNodes[hi_cn], word);
}
}
// And do this node itself
if (node.nodeType == 3) { // text node
tempNodeVal = node.nodeValue.toLowerCase();
tempWordVal = word.toLowerCase();
if (tempNodeVal.indexOf(tempWordVal) != -1) {
pn = node.parentNode;
if (pn.className != "highlight") {
// word has not already been highlighted!
nv = node.nodeValue;
ni = tempNodeVal.indexOf(tempWordVal);
// Create a load of replacement nodes
before = document.createTextNode(nv.substr(0, ni));
docWordVal = nv.substr(ni, word.length);
after = document.createTextNode(nv.substr(ni + word.length));
hiwordtext = document.createTextNode(docWordVal);
hiword = document.createElement("span");
hiword.className = "highlight";
hiword.appendChild(hiwordtext);
pn.insertBefore(before, node);
pn.insertBefore(hiword, node);
pn.insertBefore(after, node);
pn.removeChild(node);
}
}
}
}
//根據(jù)Tag名高亮關(guān)鍵字
function SearchHighlightTag(node, key) {
if (!document.createElement) return;
if (key.length === 0) return false;
var array = new Array();
array = key.split(" ");
var element = document.getElementsByTagName(node);
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < element.length; j++) {
highlightWord(element[j], array[i]);
}
}
}
//根據(jù)ID高亮關(guān)鍵字
function SearchHighlightID(node, key) {
if (!document.createElement) return;
if (key.length === 0) return false;
var array = new Array();
array = key.split(" ");
var element = document.getElementById(node);
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < element.length; j++) {
highlightWord(element, array[i]);
}
}
}

相關(guān)文章

  • 小程序從零入手之WXSS模版語法匯總

    小程序從零入手之WXSS模版語法匯總

    wxss樣式語法包括rpx尺寸單位,樣式導(dǎo)入,全局與局部樣式,常用的樣式屬性,包括尺寸、邊框、邊距、文本、顏色等等,下面這篇文章主要給大家介紹了關(guān)于小程序從零入手之WXSS模版語法匯總的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • js提交form表單,并傳遞參數(shù)的實現(xiàn)方法

    js提交form表單,并傳遞參數(shù)的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s提交form表單,并傳遞參數(shù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 學(xué)習(xí)LayUI時自研的表單參數(shù)校驗框架案例分析

    學(xué)習(xí)LayUI時自研的表單參數(shù)校驗框架案例分析

    本框架基于LayUI框架寫的表單參數(shù)校驗框架,本文分過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-07-07
  • js實現(xiàn)圖片區(qū)域可點擊大小隨意改變(適用移動端)代碼實例

    js實現(xiàn)圖片區(qū)域可點擊大小隨意改變(適用移動端)代碼實例

    這篇文章主要介紹了js實現(xiàn)圖片區(qū)域可點擊大小隨意改變(適用移動端)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • JavaScript中Math對象的方法介紹

    JavaScript中Math對象的方法介紹

    本文主要介紹了JavaScript中Math對象的方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 關(guān)于js內(nèi)存泄露的一個好例子

    關(guān)于js內(nèi)存泄露的一個好例子

    這篇文章主要介紹了關(guān)于js內(nèi)存泄露的一個好例子。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • IE下使用cloneNode注意事項分享

    IE下使用cloneNode注意事項分享

    在開發(fā)百度“地裂特效”時,發(fā)現(xiàn)了一些匪夷所思的 bug,第一反應(yīng)是特效本身的代碼與頁面上原有的腳本發(fā)生了沖突,經(jīng)過調(diào)試發(fā)現(xiàn),問題出現(xiàn)在 cloneNode 的應(yīng)用上
    2012-11-11
  • JavaScript日期選擇功能示例

    JavaScript日期選擇功能示例

    這篇文章主要介紹了JavaScript日期選擇功能,結(jié)合實例形式分析了javascript日期與時間相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • ES6 fetch函數(shù)與后臺交互實現(xiàn)

    ES6 fetch函數(shù)與后臺交互實現(xiàn)

    最近在學(xué)習(xí)react-native,遇到調(diào)用后端接口的問題??戳丝垂俜轿臋n,推薦使用es6的fetch來與后端進(jìn)行交互,這篇文章主要介紹了ES6 fetch函數(shù)與后臺交互實現(xiàn),感興趣的小伙伴們可以參考一下
    2018-11-11
  • 詳解tween.js 中文使用指南

    詳解tween.js 中文使用指南

    本篇文章主要介紹了詳解tween.js 中文使用指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

吉林省| 昌吉市| 合水县| 浦北县| 沙田区| 西乌珠穆沁旗| 上蔡县| 郁南县| 黎平县| 富蕴县| 高尔夫| 黄陵县| 杂多县| 兴隆县| 酒泉市| 祁连县| 广南县| 临清市| 伊金霍洛旗| 前郭尔| 屏东市| 新邵县| 准格尔旗| 苗栗县| 绍兴县| 商都县| 天柱县| 建宁县| 静乐县| 鹤壁市| 额尔古纳市| 镇原县| 建昌县| 夏邑县| 台江县| 东港市| 郯城县| 元阳县| 芷江| 营口市| 都昌县|