ContainsJS介紹

ContainsJS是一款可用於搜索某個字符串或元素在DOM樹中的位置的JavaScript庫。使用ContainsJS,用戶可以在DOM樹中查找到任何具有指定內容的元素,包括文本節點或屬性節點等。

一、基礎使用方法

首先,在標籤下添加以下代碼:

<script src="https://cdn.jsdelivr.net/npm/containsjs@0.0.4/dist/contains.min.js"></script>

然後,在你的JavaScript代碼文件中引用ContainsJS:

const contains = window.contains;

接着可以使用contains()函數開始搜索:

contains(element, searchString);

其中,element參數為要搜索的DOM元素,searchString參數為要搜索的字符串。

二、高級使用方法

1、在搜索前配置ContainsJS

ContainsJS可以使用config()函數配置諸如搜索限制、搜索方式等信息。

contains.config({
  matchExactly: false, // 是否完全匹配搜索字符串。默認為false。
  ignoreSpaces: true,  // 是否忽略搜索字符串中的空格。默認為true。
  ignoreCase: true,    // 是否不區分大小寫搜索。默認為true。
  xpath: false         // 是否使用xpath搜索方式。默認為false。
});

2、在結果中針對元素包含不同類型內容

contains()函數返回的結果並不僅限於表示字符串匹配的元素。用戶可以使用getMatchType()和getMatchDetail()函數,來得到搜索結果中元素包含不同類型內容的詳細信息。

let result = contains(document.body, "example"); // element、text、attr、attrValue
let matchType = contains.getMatchType(result);
let matchDetail = contains.getMatchDetail(result);

3、自定義搜索方式

除了contains()函數內置的搜索方式以外,ContainsJS還提供了自定義搜索函數的功能。

contains("my-element", el => {
  const tag = el.tagName.toLowerCase();
  const id = el.getAttribute("id");
  return tag === "p" && id === "my-paragraph";
});

三、推薦使用場景

1、搜索頁面關鍵詞

如果你需要在一個頁面中搜索某個關鍵詞,並且需要返迴文本節點或屬性節點信息,ContainsJS是十分合適的工具。

let result = contains(document.body, "example"); 

2、在表格中查找內容

ContainsJS可以用於在帶有大量數據的表格中查找並高亮匹配項,提供更好的搜索體驗。

let table = document.getElementById("my-table");
let rows = table.getElementsByTagName("tr");
for (let row of rows) {
  if (contains(row, "example")) {
    row.classList.add("highlighted-row");
  }
}

3、自定義搜索框實現

通過對ContainsJS配置,可以實現自定義搜索方式,支持更為多樣化的搜索框定製。

contains.config({
  matchExactly: false,
  xpath: true // 開啟xpath搜索
});
let result = contains(document.body, "//p[contains(text(), 'example')]");

結語

ContainsJS是一個強大、易用的JavaScript庫,可高效地搜索DOM元素中包含的字符串和屬性值等內容,適用於多種場景,並且支持多樣的配置和自定義方式。該庫還在不斷完善和更新中,期待更多的功能被添加與發掘。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/285052.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 15:43
下一篇 2024-12-22 15:43

發表回復

登錄後才能評論