【问题标题】:Does Firefox browser not recognize table.cells?Firefox 浏览器不能识别 table.cells 吗?
【发布时间】:2012-05-28 21:18:15
【问题描述】:

我有以下 JavaScript 代码。


var myCellCollection = document.getElementById('myTbl').cells;

这在 IE 中运行良好,它返回一个表格单元格的集合。但同一行在 Firefox 中返回“未定义”。我正在使用 IE 9 和 Firefox 12。

【问题讨论】:

    标签: javascript firefox cells


    【解决方案1】:

    你应该使用document.getElementById("myTbl").getElementsByTagName('td');

    【讨论】:

    • 谢谢。这看起来是一种更好的方法。 W3C 参考声明 Firefox 支持此 [链接](w3schools.com/jsref/coll_table_cells.asp)。此外,在 Firefox link 中的这个例子中尝试 tableObject.cells
    • 这不是“W3C 参考”。这是w3schools。这通常是错误的,在这种情况下肯定是错误的。您的示例正在查看表格 row 上的 .cells,实际上所有浏览器都支持。
    • @BorisZbarsky:是的,它的 w3schools。对不起,那里的符号错误。但我要说的是通过将 alert 更改为 alert(document.getElementById("myTable").cells); 来尝试该示例,并且效果很好!
    • 我刚刚尝试按照您的描述对其进行编辑,并且在 Firefox 中,警报显示undefined,正如预期的那样。
    • 我又试了一次,我得到的警报是“2”。由于限制,我无法上传屏幕截图,但我会想办法与您分享。是 Firefox 将这些数据存储在某处,如果我第一次使用 document.getElementById("myTable").rows[0].cells 运行代码,第二次使用 document.getElementById("myTable").cells 运行代码,那么它会显示来自商店的相同结果。我将在当天晚些时候在另一台机器上验证这一点。
    【解决方案2】:

    今天在移植旧版 Internet Explorer 应用时偶然发现了这一点。

    警告:
    container.getElementsByTagName('tagname') 返回 ALL container 中与查询 tagname 匹配的元素。

    因此table.getElementsByTagName('td') 将返回所有td 的包括嵌套表!
    但是table.cells 并没有这样做(在实现的地方)。

    另外,很明显,它不会匹配th。所以这些单元格不在返回的集合中,可选地导致如何解决它们相对于 td 的顺序的“问题”......

    为了满足table.cells 的预期功能(以DOM 顺序返回两个 th 和td),我编写了以下简单函数:

    function tableCells(t){
       if(t.cells) return t.cells; // use internal routine when supported
       for(var a=[], r=t.rows, y=0, c, x; t=r[y++];){
          for(c=t.cells, x=0; t=c[x++]; a.push(t));
       } 
       return a;
    }
    

    或者,使用 'single return' by 'if-else' 打包到相同的大小完全相同,但上面的 gzip 更小。 PS:我尝试了concat-ting table.rows[X].cells,但这没有用(尽管这样做我觉得不安全)

    用法示例:
    var identifier = tableCells( /*reference to table (or thead/tbody/tfoot) here*/ );
    它将返回一个数组(不是实时集合),就像来自 table.cells 的结果一样。

    希望这对某人有所帮助

    【讨论】:

      猜你喜欢
      • 2017-07-29
      • 2022-12-15
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多