[英]Object doesn't support property or method 'getElementsById' in IE11
我正在嘗試使用Java腳本將html數據導出到excel。 有趣的是,當我使用getElementsByTagName
而不是getElementById
時,它確實起作用。 但是,我需要查明id元素,因此“ getElementById
”是我需要的(我想)。 當我在IE中調試以下代碼時,它給了我:
對象不支持屬性或方法“ getElementsById”
這是我所擁有的:
HTML(僅供參考):
<body>
<table>
<tr>
<td>content 1</td>
<td>content 2</td>
<td id="R">content I need</td>
<td>some other content</td>
</tr>
</table>
</body>
和隨附的JS
<script type="text/javascript">
function write_to_excel()
{
str="";
var mytable = document.getElementById("R")[0];
var row_Count = mytable.rows.length;
var col_Count = mytable.getElementById("R")[0].getElementById("R").length;
var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet");
ExcelSheet.Application.Visible = true;
for(var i=0; i < row_Count ; i++)
{
for(var j=0; j < col_Count; j++)
{
str= mytable.getElementById("R")[i].getElementById("R")[j].innerHTML;
ExcelSheet.ActiveSheet.Cells(i+1,j+1).Value = str;
}
}
}
</script>
我有感覺-這很瑣碎,但是...預先感謝!)
ID必須是唯一的。
因此,您要查找的函數稱為getElementById
(單數)
getElementById
方法返回一個DOM元素(如果您有多個具有相同ID的HTML元素,則您的頁面有錯誤,但瀏覽器不會抱怨,因為10年前這是很多人犯的常見錯誤)。 因此聲明:
document.getElementById("R")[0]
毫無意義。 相反,您想要的是:
var myTD = document.getElementById("R");
如果您具有這樣的頁面結構:
<table id='T'>
<tr>
<td>content 1</td>
<td>content 2</td>
<td>content I need</td>
<td>some other content</td>
</tr>
</table>
想要迭代每一行中的每一列,您可以這樣做:
var mytable = document.getElementById("T");
var table_rows = mytable.getElementsByTagName('tr');
for (var row=0;row<table_rows.length;row++) {
var row_columns = table_rows[row].getElementsByTagName('td');
for (var col=0;col<row_columns.length;col++) {
var item = row_columns[col];
// process item here
}
}
有關如何瀏覽DOM的更多信息,請參見HTMLElement文檔: https : //developer.mozilla.org/en/docs/Web/API/Element
DOM API的完整文檔: https : //developer.mozilla.org/en/docs/DOM
您也可以在MSDN上查看相關文檔,而不是MDN來查看IE專用內容,但我更喜歡MDN,因為它記錄了API的兼容級別(其他瀏覽器實現了什么功能)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.