プロが教えるわが家の防犯対策術!

javascriptで、以下のような横長1行のテーブル内の「<td></td>」タグが
3列表示されるごとに「</tr><tr>」を挿入されて改行されるようにしたいのですが、
具体的にどのように組んで行けば良いのか分からず困っています。
よろしければご教授お願いします。

----------------------
【ソース】
<table>
 <tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
  <td>4</td>
  <td>5</td>
  <td>6</td>
  <td>7</td>
  <td>8</td>
  <td>9</td>
  <td>0</td>
 </tr>
</table>

【ブラウザでの表示】
|1|2|3|4|5|6|7|8|9|0|
----------------------

このような形に成型されるようにしたいと思っています。

----------------------
【ソース】
<table>
 <tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
 </tr>
 <tr>
  <td>4</td>
  <td>5</td>
  <td>6</td>
 </tr>
 <tr>
  <td>7</td>
  <td>8</td>
  <td>9</td>
 </tr>
 <tr>
  <td>0</td>
 </tr>
</table>

【ブラウザでの表示】
|1|2|3|
|4|5|6|
|7|8|9|
|0|
----------------------

A 回答 (1件)

「一応」サンプル


IE,Firefox,Safari(Win版),Operaで確認。
ただし、Operaの表示だけがちょっと変。
Opera developer toolsで確認すると結果は想定どおりなんだけど…??。

<html>
<head>
<title></title>
<script type="text/javascript">
function sample(tableId){
var oTable = document.getElementById(tableId);
var workTable = oTable.cloneNode(1);
var cellArr = workTable.getElementsByTagName('td');
for(var i=oTable.tBodies[0].childNodes.length-1;i>=0;i--)
oTable.tBodies[0].removeChild(oTable.tBodies[0].childNodes[i]);

var c=0;
var line = 0;
while(cellArr[c]){
var TR = oTable.tBodies[0].insertRow(line++);
for(var i=0;i<3;i++,c++){
if(cellArr[c]) TR.appendChild(cellArr[c].cloneNode(1));
else TR.insertCell(i);
}
}
}
</script>
</head>
<body>

<table id="t001" border="1">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
</tr>
</table>

<input type="button" value="テーブル再構成" onclick="sample('t001')">

</html>
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ございません。
希望通りの動作が実現すると共に、大変勉強になって感謝しています。ありがとうございました。

お礼日時:2007/09/07 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!