参考如下代码:
<html>
<body>
<div id="menu">
        <ul>
            <li >我是1</li>
            <li id="m_1">
                <ul>
                    <li>1111111111</li>
                </ul>
            </li>
            <li >我是2</li>
            <li id="m_2">
                <ul>
                    <li>2222</li>
                </ul>
            </li>
        </ul>
        </div>
<button onclick="buttonClick()">test</button>
<script type="text/javascript">
function scanChild(parent, regexp, output) {
for (var i = 0; i < parent.childNodes.length; i++) {
if (regexp.test(parent.childNodes[i].id)) {
output.push(parent.childNodes[i]);
}
scanChild(parent.childNodes[i], regexp, output);
}
}
function buttonClick() {
var output = [];
scanChild(document.getElementById("menu"), /^m_\d+$/g, output);

var msg = "";
for (var i = 0; i < output.length; i++) {
msg += output[i].id + "\r\n";
}
alert(msg);
}
</script>
</body>
</html>

解决方案 »

  1. 学会思考.<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    var idCount =0;
    $("div#menu *").each(function(idx){
    if($(this).attr("id").indexOf("m_") != -1){
    idCount ++;
    }
    }); alert(idCount);
    });
    </script>
    <div id="menu">
            <ul>
                <li >我是1</li>
                <li id="m_1">
                    <ul>
                        <li>1111111111</li>
                    </ul>
                </li>
                <li >我是2</li>
                <li id="m_2">
                    <ul>
                        <li>2222</li>
                    </ul>
                </li>
            </ul>
    </div>
      

  2. 如果你只针对li的话可以这样写:
    var divObj = document.getElementById("menu");
    var lis = divObj.getElementsByTagName("li");
    var num = 0;
    var reg = /^m_(\d)+/;
    for(var i=0;i<lis.length;i++){
      if(reg.test(lis[i].id)){
        num++;
      }
    }
      

  3. 递归方式找:
     function lookupByID(dom,to)
      {
          if( dom.id.substring(0,2)=='m_' )
            to.push( dom );
          if( dom.childNodes ) for(var i=0;i<dom.childNodes.length;i++) 
             lookupByID(dom.childNodes[i],to)
      }
      var allDoms = [];
      lookupByID( document.getElementById('menu'), allDoms );
      for(var i=0;i< allDoms .length;i++)
         console.log(allDoms [i].id)  
      

类似问题 »