- 締切済み
テーブルの変数について
var i; i=10; <table> <tr> <th>見出し</th> <th>見出し</th> </tr> <tr> <td>i<td> <td>data</td> </tr> </table> このようなプログラムを作ったのですが変数の「i」がそのまま表示されてしまうのでどうしたら「i」の中の数字を表示することができるのしょうか。初心者なのでまだまだわからないことがたくさんありますがよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- babu_baboo
- ベストアンサー率51% (268/525)
<!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'; とか。
- yyr446
- ベストアンサー率65% (870/1330)
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ですね。
お礼
回答ありがとうございました。
- babu_baboo
- ベストアンサー率51% (268/525)
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>
補足
<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.1の補足 PHP使いましょう javascriptだと <td>i<td> を見つけるのが結構めんどうですよ。 目印があれば、簡単ですが...
お礼
ありがとうございます。 参考になりました
- yyr446
- ベストアンサー率65% (870/1330)
<? php> $i; $i=10; <?> <table> <tr> <th>見出し</th> <th>見出し</th> </tr> <tr> <td><? php>$i<?><td> <td>data</td> </tr> </table>
お礼
思っていたとおりに動作しました。 とてもわかりやすい解説ありがとうございました