Javascript搜索子字符串

时间:2011-04-28 20:18:01

标签: javascript jquery function string

道歉,因为这是我无法再访问或评论的帖子的重新发布。

我正在尝试编写一个javascript函数,它将搜索html页面中所有指定的div,以查找搜索栏中包含的子字符串。我怎么能这么做呢?

到目前为止,这是我的代码,我让它工作,以便showMe方法只显示所选的div,我只需要子串代码即可工作。有人可以帮忙吗?

   <html>

<head>
<script type="text/javascript"> 
function dynamicSearch() {
    var val = document.getElementById('search').value;
    if (val == '')
      val = '-1';
    var srch = new RegExp(val, "gi");
    var els = document.getElementsByClassName('row');
    for (var idx in els) {
      if (idx != parseInt(idx))
        continue;
      var el = els[idx];
      if (typeof(el.innerHTML) !== 'undefined') {
        console.log(el.innerHTML);
        if (srch.test(el.innerHTML)) {
          el.style.display = 'block';
        } else {
          el.style.display = 'none';
        }
      }
    }
  }

function showMe (it, box) { 
var vis = (box.checked) ? "block" : "none"; 
document.getElementById(it).style.display = vis;
} 

</script>
</head>

<body>

<form>
<label for="search">Search:</label>
            <input type="text" name="search" id="search" onkeyup="dynamicSearch()"/>

<input type="checkbox" name="modtype" value="value1" onclick="showMe('div1', this)" />value1

<input type="checkbox" name="modtype" value="value2" onclick="showMe('div2', this)" />value2

<input type="checkbox" name="modtype" value="value3" onclick="showMe('div3', this)" />value3

<input type="checkbox" name="modtype" value="value4" onclick="showMe('div4', this)" />value4

<input type="checkbox" name="modtype" value="value5" onclick="showMe('div5', this)" />value5

<div class="row" id="div1" style="display:none">Show Div 1</div>
<div class="row" id="div2" style="display:none">Show Div 2</div>
<div class="row" id="div3" style="display:none">Show Div 3</div>
<div class="row" id="div4" style="display:none">Show Div 4</div>
<div class="row" id="div5" style="display:none">Show Div 5</div>
</form>

</body>

</html>

我这里的代码正确运行我的复选框,但是我不能让它只显示搜索到的子字符串作为结果(即DynamicSearch函数不起作用,但showMe一个...或者至少我无法使DynamicSearch代码生效?)

1 个答案:

答案 0 :(得分:0)

简单循环有什么问题?

function doSearch() {
 var val = $('searchBox').value;
 var els = document.getElementsByClassName('theDivs')
 //OR SIMILAR, whatever you need
 //var els = document.getElementsByTagName('div')
 for (el in els) {
  if (el.innerHTML.indexOf(val) >= 0)
   el.style.display = 'block'
  else
   el.style.display = 'none'
 }
}

编辑:看到这个小提琴 - 基于你的另一个小提琴:http://jsfiddle.net/nLxc4/5/