t=document.getElementById("t");
d=document.getElementById("d");一开始加上这两句就没问题

解决方案 »

  1.   

    d.innerHTML += str;
    ---->>>>d.insertAdjacentHTML("beforeEnd",str);
      

  2.   

    你的innerHTML把你的setAttribute给冲掉了.把innerHTML赋完值后再setAttribute.
    <div id="d">
    <table>
    <tr>
    <td id="t">aaa</td>
    </tr>
    </table>
    </div>
    <script language="javascript">
    t.setAttribute("onmouseover", function() {alert("a")});
    alert(t.onmouseover);
    str = "";
    d.innerHTML += str;
    t.setAttribute("onmouseover", function() {alert("a")});
    alert(t.onmouseover);
    </script>
      

  3.   

    innerHTML从新设置,dom就重构了