2014年8月22日 星期五

javascript 字串搜尋完整版

因為昨天寫出來的搜尋只有index to end 的方式,非常不妥,到最後突然發現了api的好用之處, 也慶幸我不是用C寫的, 改造出來良好的程式碼:


<p>搜尋目標</p>
<div id="se"></div>

<div class="sea">1231231321</div>
<div class="sea">222</div>
<div class="sea">333</div>
<div class="sea">441</div>
<div class="sea">552</div>
<div class="sea">666</div>
<input type="text" id="search" />



<script type="text/javascript">
  write();
  function write(){
   document.getElementById("se").innerHTML = document.getElementById("search").value;
   ans();
   setTimeout("write()",100);
  }
  function ans(){
   for(var i = 0;i<=document.getElementsByClassName("sea").length-1;i++){
    if(document.getElementsByClassName("sea")[i].innerHTML.toString().indexOf(document.getElementById('search').value.toString()) !=  -1 && document.getElementById('search').value != ""){
     console.log("found");
    }
    if(document.getElementsByClassName("sea")[i].innerHTML.toString().indexOf(document.getElementById('search').value.toString()) == -1){
      document.getElementsByClassName("sea")[i].style.display = "none";
     }else{
      document.getElementsByClassName("sea")[i].style.display = "";
     }
   }
  }
</script>


因為都沒有寫下說明,所以我來說明一下流程:

1.用For搜尋有多少個文字的節點
2.判斷節點上的文字,搜尋有沒有你要的字串,有則回傳文字,不等於-1就代表找到了
3.第二是擺好看的,這另一個判斷式,等於-1代表不是我們要的項目, 就隱藏其他項目

以上沒有使用 onkeyup 的HTML事件, 純偵測

onkeyup參考:
http://api.jquery.com/keydown/
http://www.w3schools.com/jsref/event_onkeyup.asp

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014