由于IE中tbody不支持innerHTML,打算使用替换的方法来实现,因此要将<tbody>匹配出来,请正则达人指点:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
 </HEAD>
<script>
function $(ID) {return document.getElementById(ID);}
/*获取父节点*/
/*$p($("id"),"DIV")*/
function $p(id,t){
for(var i=0,n=id;n=n.parentNode;i++){
if(n.tagName==t){return n}
if(n==document.documentElement){return -1;}
}
}
function _tt() {
var str = '<tr><td>666</td></tr>';
var obj = $p($("fieldExt"),"DIV");
var re2 = /<TBODY[^>]*ID="fieldExt\1[^>]*>[\s\S]*<\/TBODY>/ig;
obj.innerHTML = obj.innerHTML.replace(new RegExp(re2),'<tbody id="fieldExt">'+str+'</tbody>');}
</script>
 <BODY>
 <div id="text1">
  <table>
   <tbody id="fieldExt"><tr><td>123</td></tr></tbody>
   <tr><td>456</td></tr>
  </table></div>
  <button onclick="_tt();">替换</button>
 </BODY>
</HTML>
上例是要将<tbody id="fieldExt"><tr><td>123</td></tr></tbody>替换成<tbody id="fieldExt"><tr><td>666</td></tr></tbody>

解决方案 »

  1.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
     </HEAD>
    <script>
    function $(ID) {return document.getElementById(ID);}
    /*获取父节点*/
    /*$p($("id"),"DIV")*/
    function $p(id,t){
        for(var i=0,n=id;n=n.parentNode;i++){
            if(n.tagName==t){return n}
            if(n==document.documentElement){return -1;}
        }
    }
    function _tt() {
        var str = '<tr><td>666</td></tr>';
        var obj = $p($("fieldExt"),"DIV");
        var re2 = /<(tbody)[^>]*id="fieldExt[^>]*>[\s\S]*?<\/\1>/ig;
        obj.innerHTML = obj.innerHTML.replace(
    new RegExp(re2),
    '<tbody id="fieldExt">'+str+'</tbody>');}
    </script>
     <BODY>
     <div id="text1">
      <table>
          <tbody id="fieldExt"><tr><td>123</td></tr></tbody>
          <tr><td>456</td></tr>
      </table></div>
      <button onclick="_tt();">替换</button>
     </BODY>
    </HTML>
      

  2.   

    IE下table、tr和tobdy下innerHTML是只读属性
      

  3.   

    /<TBODY[^>]*ID="fieldExt\1[^>]*>[\s\S]*<\/TBODY>/ig;
    加这个\1是神马意思?,,,
      

  4.   

    其实没必要这样做,不过给你练习下正则吧
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
     </HEAD>
    <script>
    function $(ID) {return document.getElementById(ID);}
    /*获取父节点*/
    /*$p($("id"),"DIV")*/
    function $p(id,t){
        for(var i=0,n=id;n=n.parentNode;i++){
            if(n.tagName==t){return n}
            if(n==document.documentElement){return -1;}
        }
    }
    function _tt() {
        var str = '<tr><td>666</td></tr>';
        var obj = $p($("fieldExt"),"DIV");
        var re2 = /(<TBODY[^>]*?ID="fieldExt[^>]*>)[\s\S]*?(?=<\/TBODY>)/ig;
        obj.innerHTML = obj.innerHTML.replace(re2,function(match,g1){
    return g1+str;
    });
    }
    </script>
     <BODY>
     <div id="text1">
      <table>
          <tbody id="fieldExt"><tr><td>123</td></tr></tbody>
          <tr><td>456</td></tr>
      </table></div>
      <button onclick="_tt();">替换</button>
     </BODY>
    </HTML>
      

  5.   

    控制td
    <script>
    function $(ID) {return document.getElementById(ID);}
    function _tt() {
        var td = $("fieldExt").getElementsByTagName('tr')[0].getElementsByTagName('td')[0];
    td.innerHTML = "666";
    }
    </script>
      

  6.   

    2楼和5楼在IE下貌似不行6楼:其实要操作的是tbody中的内容,而非tbody中的td,也就是不是将其实的123替换成666,而是整个
      

  7.   

    5楼貌似有其它解决方案,给个呗,呵呵,这个问题搞了半天,就是拜倒在tbody下
      

  8.   

    /(<TBODY[^>]*?ID="?fieldExt[^>]*>)[\s\S]*?(?=<\/TBODY>)/ig;
    代替我之前的正则。
      

  9.   

    tbody中的id是为了区别其它的tbody本例目的是为了实现将通过ajax取回的内容插入到table中(tbody位置)
      

  10.   

    IE下,属性的双引号被过滤了,做一个忽略处理。/<(tbody)[^>]*id="?fieldExt[^>]*>[\s\S]*?<\/\1>/ig
      

  11.   

    function _tt() {
        var newNode = document.createElement("td");
    newNode.innerHTML = "666";
    var newNode1 = document.createElement("tr");
    newNode1.appendChild(newNode);
    var tbdy = $("fieldExt");
    tbdy.replaceChild(newNode1,tbdy.firstChild)
    }
      

  12.   

    呵呵,不仅仅是将123替换成666,而是tobdy中的所有内容