>  기사  >  웹 프론트엔드  >  JavaScript로 구현된 검색 및 강조 기능의 예

JavaScript로 구현된 검색 및 강조 기능의 예

韦小宝
韦小宝원래의
2018-01-22 09:56:431861검색

이 글에서는 주로 JavaScript에서 구현하는 검색 및 강조 표시 기능을 소개하며, 자바스크립트 문자 탐색 및 페이지 요소 속성과 관련된 작업 기술을 포함하여 JavaScript에 관심이 있는 친구는 이 글을 참조할 수 있습니다.

시나리오: 사용 목록에 있는 데이터는 단일 데이터가 매우 짧기 때문에 필터링 기능을 구현하는 데 php+mysql을 사용하지 않습니다. 필터링, 일치하는 항목 강조 표시 또는 일치하지 않는 항목 숨기기에는 javascript만 사용됩니다.

렌더링:

html:

<p class="contracts-header">名称: <input type="text" value="" id="search_contract_name"></p>
<p class="contracts-header">代码: <input type="text" value="" id="search_contract_code" placeholder="不区分大小写"></p>
<p class="contracts-header"><button onclick="search()">查找</button></p>
<p id="contracts-list">
  <ul>
  <li><input type="checkbox" name="contract[]" value="code|name" /><span>name(code)</span></li>
  <li><input type="checkbox" name="contract[]" value="code|name" /><span>name(code)</span></li>
  </ul>
</p>

javascript:

function search()
{
  var search_contract_name = $("#search_contract_name").val();
  var search_contract_code = $("#search_contract_code").val();
  if (search_contract_name && search_contract_code) { //两个输入框都有值
    search_contract_code = search_contract_code.toLowerCase(); //不区分大小写, 全部转换为小写, 下同
    $("input[name=&#39;contract[]&#39;]").each(
        function () {
          var code_name = this.value;
          var search_code = code_name.toLowerCase().indexOf(search_contract_code); 
          var search_name = code_name.toLowerCase().indexOf(search_contract_name);
          if (search_code >=0 && search_name >=0 ) {
            // this.nextSibling.style.backgroundColor = "#FFDEAD"; //高亮匹配到的
            this.parentNode.style.display = &#39;block&#39;;
          } else {
            // this.nextSibling.style.backgroundColor = "";
            this.parentNode.style.display = &#39;none&#39;; //隐藏不匹配的
          }
        }
    );
  } else if(search_contract_name || search_contract_code) { //只有一个输入框有值
    search_contract_name = search_contract_name.length ? search_contract_name : &#39;xxx&#39;; //默认为xxx是因为不可能存在xxx
    search_contract_code = search_contract_code.length ? search_contract_code.toLowerCase() : &#39;xxx&#39;;
    $("input[name=&#39;contract[]&#39;]").each(
      function () {
        var code_name = this.value;
        var search_code = code_name.toLowerCase().indexOf(search_contract_code);
        var search_name = code_name.toLowerCase().indexOf(search_contract_name);
        if (search_code >=0 || search_name >=0 ) {
          // this.nextSibling.style.backgroundColor = "#FFDEAD";
          this.parentNode.style.display = &#39;block&#39;;
        } else {
          // this.nextSibling.style.backgroundColor = "";
          this.parentNode.style.display = &#39;none&#39;;
        }
      }
    );
  }
}

이상이 이 글의 내용 전부이며, 자바스크립트를 배우시는 모든 분들께 도움이 되었으면 좋겠습니다! !

관련 권장 사항:

JavaScript 생성자 패턴 인스턴스 분석

JavaScript는 객체의 길이를 어떻게 계산합니까?

JavaScript의 typeof 및 유형 판단에 대한 자세한 설명

위 내용은 JavaScript로 구현된 검색 및 강조 기능의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.