有一个这样的table<table id="tb">
<thead>
<tr class="tb_head2">
                <td  title="日期" format>
                    <a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
                </td>
                <td id="td" title="用户数量" format="qianfenshu">
                    <a onclick="orderby('UserCount',this)" href="#">用户数量</a>
                </td>
                <td title="有效用户数" format="qianfenshu">
                    <a onclick="orderby('LiveUserCount',this)" href="#">有效用户数</a>
                </td>
            </tr>
</thead>
</table>我期望把<a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
过滤成  日期
就去去掉超链接.我写的代码var tb = document.getElementById('tb');
            var src = tb.innerHTML;
            var re = /<a[^>]*?>([\w\W]+)<\/a>/gi;               // 创建正则表达式模式。            src = src.replace(re, '$1');
            tb.innerHTML = src;请问哪错了. 应该怎么写这个替换呢?

解决方案 »

  1.   

    试试:
    /<a(?=.*shordate)[^>]*?>([\w\W]+?)<\/a>/gi
      

  2.   

    不行呀. 我就纳了闷了.
    如果
    "<a id=\"a_\" onclick=\"orderby('shordate',this)\" href=\"#\">日期</a>".replace(/<a[^>]*?>([\w\W]+)<\/a>/gi,'$1')没问题.
    但是如果把那个TABLE的innerhtml做替换的时候, 就不行了.
      

  3.   

    Try:  var re = /<a[^>]*>([^<>]+)<\/a>/gi;               // 创建正则表达式模式。
      

  4.   

    innerHTML还没有一个通用标准,而在IE下innerHTML对于标签为COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR的元素是只读的。要想在IE下动态修改表格,只能使用insertRow和insertCell;
    http://zhiqiang.org/blog/it/innerhtml-2-cd-issue-dynamic-modification-table-function-of-js.html
      

  5.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
      
    </head>
    <body><table id="tb">
    <thead>
    <tr class="tb_head2">
                    <td  title="日期" >
                        <a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
                    </td>
                    <td id="td" title="用户数量" >
                        <a onclick="orderby('UserCount',this)" href="#">用户数量</a>
                    </td>
                    <td title="有效用户数" >
                        <a onclick="orderby('LiveUserCount',this)" href="#">有效用户数</a>
                    </td>
                </tr>
    </thead>
    </table>
    <script type="text/javascript">    var tb = document.getElementById('tb');
        var src = tb.innerHTML;
        alert(src);
        var re = /<a[^>]*>([^<>]+)<\/a>/gi;               // 创建正则表达式模式。    src = src.replace(re, '$1');
        alert(src);
        tb.outerHTML = src;  //用OUTERHTML 试试 
     

    </script>
    </body>
    </html>
      

  6.   

    是过滤掉该TAB中全部超链接,还是只过滤第一个?提问不清楚,就先给你全部的吧。<table id="tb">
    <thead>
    <tr class="tb_head2">
                    <td  title="日期" format>
                        <a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
                    </td>
                    <td id="td" title="用户数量" format="qianfenshu">
                        <a onclick="orderby('UserCount',this)" href="#">用户数量</a>
                    </td>
                    <td title="有效用户数" format="qianfenshu">
                        <a onclick="orderby('LiveUserCount',this)" href="#">有效用户数</a>
                    </td>
                </tr>
    </thead>
    </table><script>var str = document.getElementById("tb").innerHTML;alert(str.replace(/<\/?a[^>]*>/gi, ""));</script>
      

  7.   

    嗯, 谢谢了. 后来我也发现是小括号 $1的取值有问题.
    原先的innerHTML也发现在IE下不行, 本打算用$().html(src)来解决.
    又多明白了一些, 感谢你这样授人以渔的方式~ 祝工作愉快.