テーブルの行と列を逆転させるjavascript関数を作成しました。ここでは、コードは次のようになります。getElementsByTagName( "td")は、選択した行のすべてのtd子を返しません。
function rotate(){
var table = document.getElementById("table");
var newtable = document.createElement("table");
var tablebody = table.getElementsByTagName("tbody")[0];
var newtablebody = document.createElement("tbody");
newtable.appendChild(newtablebody);
var rows = tablebody.getElementsByTagName("tr");
var heads = tablebody.getElementsByTagName("th");
var i;
for(i = 0; i < rows.length; i++)
{
var cells = rows[i].getElementsByTagName("td");
var j;
for(j = 0; j < heads.length; j++)
{
if(newtablebody.getElementsByTagName("tr")[j] == undefined)
{
var newrow = document.createElement("tr");
newtablebody.appendChild(newrow);
}
if(cells[j] == undefined)
{
var newcell = document.createElement("td");
newtablebody.getElementsByTagName("tr")[j].appendChild(newcell);
}
else
{
var newcell = cells[j];
var nbspan = cells[j].getAttribute("colspan");
newcell.setAttribute("rowspan", nbspan);
newcell.setAttribute("colspan", 1);
newtablebody.getElementsByTagName("tr")[j].appendChild(newcell);
}
}
}
table.innerHTML = newtable.innerHTML;
};
問題は、私は現在の行のためのタグ名「TD」を持つすべての子を取得しようとしたとき、私は、コンソールログから見ることができるのに対し、私は、未定義の細胞の多くを得ることですこれらのセルが存在し、データを含んでいる(ログにinnerHTMLが表示されます)。
私は本当に失われていますので、どんな助けもありがとうございます。ありがとう!
'table'、' tablebody'などがすべてnullでないことを確認しましたか? – birdoftheday
ここにいくつかのHTMLを置くと、あなたのスクリプトをテストする方がはるかに簡単です。 – John
はい、console.log(table.innerHTML)などで何度かチェックしたことがあります。 実際には、子供が検索されているので、nullではないことが分かっていますが、そうではないので、私は混乱しています。 –