私は次のJavaScriptコードを持っています。
var myCellCollection = document.getElementById('myTbl').cells;
これはIEでうまく機能し、テーブルセルのコレクションを返します。しかし、Firefoxでは同じ行が「未定義」を返します。IE9とFirefox12を使用しています。
私は次のJavaScriptコードを持っています。
var myCellCollection = document.getElementById('myTbl').cells;
これはIEでうまく機能し、テーブルセルのコレクションを返します。しかし、Firefoxでは同じ行が「未定義」を返します。IE9とFirefox12を使用しています。
使用する必要がありますdocument.getElementById("myTbl").getElementsByTagName('td')
;
古いInternetExplorerアプリを移植しているときに、今日これに遭遇しました。
警告:クエリに一致する内部のすべて
container.getElementsByTagName('tagname')
の要素を返します。container
tagname
したがって、ネストされたテーブルのものを含むすべてのtable.getElementsByTagName('td')
を返します!
ただし、それは行いません(実装されている場合)。 td
table.cells
また、明らかに、それは一致しませんth
。したがって、これらのセルは返されたコレクションに含まれず、オプションで、tdに対する順序を解決する方法の「問題」が発生します。
(とDOM順の両方table.cells
を返す)の期待される機能をシムするために、次の単純な関数を作成しました。 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;
}
または、「if-else」による「single return」を使用すると、正確に同じサイズにパックされますが、上記のgzipは小さくなります。PS:私はconcat
-tingを試しましたtable.rows[X].cells
が、それはうまくいきませんでした(とにかくそうするのは安全ではないと思いますが)
使用例:
var identifier = tableCells( /*reference to table (or thead/tbody/tfoot) here*/ );
からの結果のような配列(ライブコレクションではない)を返しtable.cells
ます。
これが誰かに役立つことを願っています