innerHTML在IE中報錯


 
問題: 開發過程中,用到循環往table里面插入tr標簽,然后tr里又循環插入td,在其它瀏覽器都沒問題,但是在IE9及以下版本中都報錯:
 
google上得到答案:由於我之前不知道錯誤的原因,在百度找不到解決方法,后來用谷歌搜到了,外國有人也遇到過這個問題,並指出了問題的所在:
 
 
演示代碼:
  1. <!DOCTYPE html>
    <html lang="zh-cn">
        <head>
            <meta http-equiv="content-type" content="text/html;charset=utf-8" />
            <title>默認標題</title>
        </head>
        <body>
            <table id="mytable" border="1" cellpadding="1" cellspacing="0">
                <tr>
                    <td>222</td>
                </tr>
            </table>
            <script type="text/javascript">
                var mytable = document.getElementById('mytable');
                var tr = mytable.getElementsByTagName('tr')[0];
                var td = mytable.getElementsByTagName('td')[0];
                
                //讀取innerHTML(IE任何版本都不報錯,IE6未測)
                alert(mytable.innerHTML);
                alert(tr.innerHTML);
                alert(td.innerHTML);
                
                //寫入innerHTML
                // mytable.innerHTML = '<tr><td>11111</td></tr>'; //IE9及以下報錯
                // tr.innerHTML = '<td>11111</td>';    //IE9及以下報錯
                // td.innerHTML = '11111';            //所有版本不報錯(IE6未測)
                
                //解決方法,使用DOM的原始操作方法或者表格操作方法
                // var btnRow = mytable.insertRow();
                // var cell = btnRow.insertCell(btnRow.getElementsByTagName('td').length);
                // cell.innerHTML = "some html text";
            </script>
        </body>
    </html>
     
  2. 得出結論:IE9及以下版本的table以及tr的innerHTML屬性都是只讀的,你可以用它讀取table或者tr中的值,但不能寫入,寫入就報錯,另外在IE9及以下版本中td的innerHTML可讀可寫。
 
解決方法:使用原始的DOM操作方法或者表格操作方法,見演示代碼。


有朋友回復說可以用jquery解決,是的,可以這個問題確實可以用jquery解決,但是其實jquery內部使用的方法,還是原始的js操作,而且,我當時的情況沒法使用jquery,因為我是網上直接找的一個日歷代碼,它是用原生js寫的,我沒法在里面夾雜着jquery寫。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM