javascript - 对象不支持 IE11 中的属性或方法 'getElementsById'

标签 javascript excel

我正在尝试使用java脚本将html数据导出到excel中。有趣的是,当我使用 getElementsByTagName 而不是 getElementById 时,它确实有效。但是,我需要精确定位 id 元素,因此 'getElementById' 就是我所需要的(我猜)。当我在 IE 中调试以下代码时,它给出:

Object doesn't support property or method '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>

我有这样的感觉 - 这没什么,但是......提前致谢!)

最佳答案

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 的兼容性级别(其他浏览器实现的功能)。

关于javascript - 对象不支持 IE11 中的属性或方法 'getElementsById',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942863/

相关文章:

javascript - 在 Canvas 中加载多个图像

javascript - jquery:当 'hover' 在 '.myBox' 上解除绑定(bind)时执行某些操作?

从受密码保护的 Access 数据库进行 Excel VBA 查询

javascript - JS/jQuery : Best way to get typed characters after '#' in textarea

javascript - 通过 jQuery 隐藏超时 block

excel - 除非我单击播放按钮,否则 VBA excel 不会运行

vba - 如何在 Excel VBA 函数中允许通配符 * 在字符串中查找单词?

excel - 自动将 B 列上的链接添加到 Excel 中 A 列中的字符串

vba - Excel 按钮增长

javascript - Dropzone.js - Combine with normal form - 询问定位