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/n/285052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-22 15:43
下一篇 2024-12-22 15:43

发表回复

登录后才能评论