• 締切済み

テーブルの変数について

var i; i=10; <table> <tr> <th>見出し</th> <th>見出し</th> </tr> <tr> <td>i<td> <td>data</td> </tr> </table> このようなプログラムを作ったのですが変数の「i」がそのまま表示されてしまうのでどうしたら「i」の中の数字を表示することができるのしょうか。初心者なのでまだまだわからないことがたくさんありますがよろしくお願いします。

みんなの回答

回答No.5

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>test</title> <table> <tr> <th>見出し</th> <th>見出し</th> </tr> <tr> <td>i</td> <td>data</td> </tr> </table> <script type="text/javascript"> //@cc_on var i; i=10; var tds = document.getElementsByTagName('td'); var cnt = 0; var td; var txt; while (td = tds[cnt++]) { txt = td./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/; if ('i' === txt) td./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/ = i; } </script> かいせつか? ・・・。 かんたんにいえば、 var tds = document.getElementsByTagName('td'); が、じっこうされたとき、まだtableがよみこまれてないからね! なので、すくりぷとは<body>のてまえじゃなくて、さいごにおくと よい。(</body>の手前) //@cc_on は、こめんとにおもえるかもしれないが、これもIEでのこーどのいちぶ。 IEと、そうでないぶらうざように、しょりをわけるためにつかってます td.innerText は、IE用。 td.textContent は、それ以外用で。 これを1ぎょうでかくと td./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/; それと、このTDをけんさくして、あたいをおきかえするほうほうは、 じょうだんのつもりでかいたんだなぁ~ ほんらいなら、IDをふって、おきかえたほうが、よいとおもふ。 <td id="hoge">abc</td> document.getElementById('hoge').textContent = 'ABC'; もしくは、 document.getElementById('hoge').firstChild.nodeValue = 'ABC'; とか。

hinematuri
質問者

お礼

思っていたとおりに動作しました。 とてもわかりやすい解説ありがとうございました

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

DOMでTABLEの中を全部検索してみた var i; i=10; var table=document.getElementById("table1"); for(var x in table.rows){ if(table.rows[x].cells!=null){ for(var y in table.rows[x].cells){ if(table.rows[x].cells[y].nodeName=="TD"){ if(table.rows[x].cells[y].innerHTML =="i"){ table.rows[x].cells[y].innerHTML = i; } } } } } ※babu_babooさんのようにTDの中身だけ探せばよかったのか。 IEだと innerTextでその他だとtextContentですね。

hinematuri
質問者

お礼

回答ありがとうございました。

回答No.3

tdのなかみをけんさくし、おきかえしてみた。^^; <script type="text/javascript"> var i; i=10; //@cc_on var tds = document.getElementsByTagName('td'); var cnt = 0; var td; var txt; while (td = tds[cnt++]) { txt = td./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/; if ('i' === txt) td./*@if (@_jscript) innerText @else@*/ textContent /*@end@*/ = i; } </script>

hinematuri
質問者

補足

<html> <script type="text/javascript"> var i; i=10; var tds = document.getElementsByTagName('td'); var cnt = 0; var td; var txt; while (td = tds[cnt++]) { txt = td.textContent; if ('i' === txt) td.textContent = i; } </script> <body> <table> <tr> <th>見出し</th> <th>見出し</th> </tr> <tr> <td>i</td> <td>data</td> </tr> </table> </body> </html> 解答ありがとうございます。このように書いてみたのですが、だめでした。どこが悪いのか教えてもらえませんか。本当に全然知らなくてすいません

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

No.1の補足 PHP使いましょう javascriptだと <td>i<td> を見つけるのが結構めんどうですよ。 目印があれば、簡単ですが...

hinematuri
質問者

お礼

ありがとうございます。 参考になりました

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

<? php> $i; $i=10; <?> <table> <tr> <th>見出し</th> <th>見出し</th> </tr> <tr> <td><? php>$i<?><td> <td>data</td> </tr> </table>