js搜索文本并高亮突出显示匹配字符文字特效代码

所属分类: 网页特效-搜索&查询    2023-12-06 12:18:19

js搜索文本并高亮突出显示匹配字符文字特效代码 ie兼容6
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

js搜索文本并高亮突出显示匹配字符文字特效代码(共3个文件)

    • index.html

使用方法

(function () {
  'use strict';

  var controls = {
    input: document.querySelector('[search="input"]'),
    items: document.querySelectorAll('[search="item"]'),
    noResults: document.querySelector('[search="noResults"]'),
    clear: document.querySelector('[search="clear"]'),
    counter: document.querySelector('[search="counter"]'),
    indexedItems: [],
    hasControls: function() {
      return this.input != undefined && this.items != undefined
    }
  }

  // checks for required search components
  if (!controls.hasControls()) return;

  // shows/hides no results message
  function toggleNoResultsMessage(searchTerm) {
    // checks if any items are open
    var hasResults = Array.prototype.filter.call(controls.items, function (item) {
      return item.hasAttribute('open');
    })

    if (hasResults.length && searchTerm.length > 1) {
      // hide no results message if items are open
      controls.noResults.setAttribute('hidden', '');
    } else if (searchTerm.length > 1) {
      // show no results message
      controls.noResults.removeAttribute('hidden');
      Array.prototype.forEach.call(controls.items, function (item) {
        item.setAttribute('hidden', '')
      })
      return;
    } else {
      // hide no results message
      controls.noResults.setAttribute('hidden', '');
    }
  }

  // searches and highlights
  function searchAndHighlight() {
    Array.prototype.forEach.call(controls.items, function (item) {
      item.innerHTML = item.innerHTML.replace(/<mark>([^<]+)<\/mark>/gi, '$1');
    });

    var searchTerm = event.target.value.trim().toLowerCase();

    if (searchTerm.length > 1) {
      controls.indexedItems.forEach(function (item, i) {
        if (controls.indexedItems[i].indexOf(searchTerm) != -1) {
          controls.items[i].setAttribute('open', true);
          controls.items[i].removeAttribute('hidden'); // removes hidden attribute when deleteing
          controls.items[i].innerHTML = controls.items[i].innerHTML.replace(new RegExp(searchTerm + '(?!([^<]+)?>)', 'gi'), '<mark>$&</mark>');
        } else {
          controls.items[i].removeAttribute('open');
          controls.items[i].setAttribute('hidden', '');
        }
      });
      controls.clear.removeAttribute('hidden');
    } else {
      Array.prototype.forEach.call(controls.items, function (item) {
        item.removeAttribute('open');
        item.removeAttribute('hidden');
      });
      controls.clear.setAttribute('hidden', '');
    }
    countHighlights();
    toggleNoResultsMessage(searchTerm);
  }

  // counts number of matches
  function countHighlights() {
    var count = document.querySelectorAll('mark').length;
    if (count) {
      return controls.counter.innerHTML = '共 ' + count + ' 处';
    }
    return controls.counter.innerHTML = '';
  }

  // sanitize search result matches
  Array.prototype.forEach.call(controls.items, function (item) {
    controls.indexedItems.push(item.textContent.replace(/\s{2,}/g, ' ').toLowerCase());
  });
  
  controls.input.addEventListener('keydown', function(event) {
    // prevent submit on enter
    if (event.keyCode === 13) 
    {
      event.preventDefault();
      return false;
    }
  })

  // input keyup
  controls.input.addEventListener('keyup', function(event) {
    searchAndHighlight();
  });

  // clear button click
  controls.clear.addEventListener('click', function() {
    event.target.setAttribute('hidden', '');
    toggleNoResultsMessage('');
    searchAndHighlight();
    controls.input.focus();
  })

})();

站长提示:
1. 苦力吧素材官方QQ群:950875342
2. 平台上所有素材资源,需注册登录会员方能正常下载。
3. 会员用户积极反馈网站、素材资源BUG或错误问题,每次奖励2K币
4. PHP源码类素材,如需协助安装调试,或你有二次开发需求,可联系苦力吧客服。
5. 付费素材资源,需充值后方能下载,如有任何疑问可直接联系苦力吧客服
相关资源 / 搜索&查询

jquery文本框输入关键字快速筛选显示高亮模糊查询结果插件

一款在input输入的字符快速搜索特效,将即时返回筛选的文字高亮结果,非常的实用。
  搜索&查询
 9441  0

js列表商品多条件筛选查询代码

一款多字段筛选搜索代码,可鼠标点选多个条件同时查询数据,针对点选的条件可进行删除。
  搜索&查询
 6207  0

jquery文本框输入关键词可定位高亮显示匹配结果

一款根据输入值匹配结果高亮显示插件,当用户在input文本框中输入时,可定位并突出显示匹配的关键词。
  搜索&查询
 9282  0

jquery响应式多字段数据模糊查询搜索插件

table表格数据多条件联合查询特效,支持模糊快速搜索功能,非常实用。
  搜索&查询
 4255  0

评论数(0) 回复有机会获得K币 用户协议

^_^ 还没有人评论,快来抢个沙发!
😀
  • 😀
  • 😊
  • 😂
  • 😍
  • 😑
  • 😷
  • 😵
  • 😛
  • 😣
  • 😱
  • 😋
  • 😎
  • 😵
  • 😕
  • 😶
  • 😚
  • 😜
  • 😭
发表评论