将一个HTML中的元素(input,a,div,span,select这些即可)都查找出来,
然后全部按照顺序,都给加上id的属性。id ="1",id="2",这样一个个加即可。需要注意的是,
1,HTML中原本有ID的需要删除掉。
2,元素不一定都是小写,也可能是大写,也可能是混在的,比如input,可能是INPUT,可能是Input,可能是INput等等。

解决方案 »

  1.   

    用正则的目的,就是不要有循环。用dom对象,实现不了吧。
      

  2.   

    HTML是通过rose生成的,
    动则上万行,而且要求批量处理,所以效率更重要。
      

  3.   


    你这个真不是单纯的正则能解决的,为什么呢因为正则不会知道,现在找到的内容,是所有内容中的第几个(当然你可以说用一个全局变量,但是那不属于正则的范畴),但是这种处理方式反而是dom最擅长的。另外如果单纯从效率讲的话,dom初次分析和正则完全匹配一个正则的时间是一致,但是如果要多次处理不同的内容的话,那么dom的优势就体现出来了,正则只能从头再来!
      

  4.   

    额。如果我有这么一个标签
    <jeechang></jeechang>
    那么,是加ID呢还是不加ID呢其实我想说的是,如果论效率循环不比正则慢
    能实现的易用性和可靠性,正则也不占优势
    唯一好处就是,看代码的时候少了不少行代码。另外,其实那不是循环,是递归~
      

  5.   

    +++用DOM的W3C标准方法去做楼主的要求会事半功倍!你要匹配的可不是简单的几个元素,而是所有input,a,div,span,select。所以个人感觉:如果一定要用正则来完成的话,那结果也许就是事倍功半了!建议不要为了正则而正则!
      

  6.   

    回 hnxxwyq关于 现在找到的内容,是所有内容中的第几个,
    这个问题可以解决。因为ID是从1开始,依次累加的,可以通过function(){i++....来实现。
      

  7.   

    如果是<span>asdfasd<span>fdsgfsdg<span>dafsdaf</span>adsfa<span>sdafasdfa</span></span></span>这样层层嵌套的情况 用一条正则肯定做不到吧只能用dom的递归才能实现
      

  8.   

    回 cj205:
    <jeechang></jeechang>这样的CASE不用考虑,input,a,div,span,select这些即可。回 shuixiya1999:
    \<(span|SPAN)就可以吧。
      

  9.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Untitled Document</title>
    <script type="text/javascript">
    window.onload = function(){
    var html = document.body;
    var reg = /(<(?!\/)\w+[^>]*?)(id=[\S]+)?([^>]*>)/ig;
    var i = 1;
    html.innerHTML = html.innerHTML.replace(reg,function(a,b,c,d){
    return b + ' id=' + i++ + d;
    });
    alert(html.innerHTML);
    };
    </script>
    </head>
    <body>
    <div>
    <div>
    <span id="test"></span>
    <span></span>
    </div>
    <div>

    </div>
    </div>
    </body>
    </html>
      

  10.   

    TO :cj205VERY NICE!!!十分感谢!