2017-08-11 68 views
0

我爲我的網站做了一些搜索功能。我已經成功完成了關鍵字搜索。現在,我正在嘗試從列表中搜索標題。我已經嘗試了一些谷歌,但他們都沒有爲我工作。Javascript search search through all list not working

我的搜索應該與關鍵字和任何數據屬性一起使用。示例:當我搜索Apple時,結果應該顯示數字1和Apple。如果我搜索1,結果應顯示1並添加蘋果。

這裏是我的搜索功能:

function myFunction() { 
 
    var input, filter, ul, li, a, i; 
 

 
    input = document.getElementById("mySearch"); 
 
    title = document.querySelectorAll("[title=" + CSS.escape(input) + "]"); 
 
    filter = input.value.toUpperCase(); 
 
    ul = document.getElementById("result"); 
 
    li = ul.getElementsByTagName("li"); 
 

 
    for (i = 0; i < li.length; i++) { 
 
     a = li[i]; 
 
     if (a.innerHTML.toUpperCase().indexOf(filter) > -1) { 
 
      li[i].style.display = ""; 
 
     } else { 
 
      li[i].style.display = "none"; 
 
     } 
 
    } 
 
}
<section id="result"> 
 
<div class="search"> 
 
    <input type="text" id="mySearch" onkeyup="myFunction()" placeholder="Search.."> 
 
    <label><input type="checkbox" id="myCase" ">Case Sensitive</label> 
 
</div> 
 

 
<ul> 
 
    <li> 
 
     <div>Search 1</div> 
 
     <ul> 
 
      <li title="Apple">1</li> 
 
      <li title="Ball">2</li> 
 
      <li title="Cat">3</li> 
 
     </ul> 
 
    </li> 
 
    <li> 
 
     <div>Search 2</div> 
 
     <ul> 
 
      <li title="Eagle">4</li> 
 
      <li title="Ferry">5</li> 
 
      <li title="Glue">36</li> 
 
     </ul> 
 
    </li> 
 
</ul>

+0

,我從你的代碼做了一個片段,它似乎是工作。怎麼了?你只是說「它們都不起作用」。 –

+0

除了沒有正確關閉的'36/li>',這可能是一個問題。 –

+0

示例我想搜索Apple,因此結果應該只顯示數字1.它將從數字1獲取數據屬性= Apple –

回答

0

也許只是檢查標題:

var filter = "CAT"; 
document.querySelectorAll("ul > li") 
.forEach(function(el){ 
    el.style.display = 
    el.attributes.title.toUpperCase().includes(filter) 
    ?"block" 
    :"none"; 
}); 
+0

我更新了我的問題,請檢查它的背面。 –