- - PR -
JavaScriptでの表の行の表示・非表示の切り替え
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-18 20:04
いつも勉強させて頂いております。
現在、セレクトボックスからある値を選んだときだけ、表に2行表示したいと思っており、JavaScriptにて制御を考えています。 現状では、ある値(テスト1)を選んだときだけテキストを出すことはできるのですが、どうしても2行表示するという事ができません。 どうすれば、テスト1を選択したときだけ2行表示し、テスト1以外を選択したときは非表示にする事ができるのでしょうか。ご教授下さい。 ソースは以下の通りです。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>プルダウンメニューでページ内の表示を変える</title> <script type="text/javascript" language="JavaScript"> <!-- 選択された値によって、行の表示・非表示を切り替える function showthis(sel) { var value = sel.options[sel.selectedIndex].value; if(value == "test1"){ if(document.getElementById){ if(document.getElementById(value).style.display == "block"){ document.getElementById(value).style.display = "none"; }else{ document.getElementById(value).style.display = "block"; } } } else if(value != "test1"){ if(document.getElementById){ document.getElementById("test1").style.display = "none"; } } } // --> </script> </head> <body> <h2>選択されたものによって、行の表示・非表示を切り替える</h2> <table border="1" width="367"> <tr> <td width="134"> <form> <select onchange="showthis(this)"> <option selected="selected">選んでください</option> <option value="test1">テスト1</option> <option value="test2">テスト2</option> <option value="test3">テスト3</option> </select> </form> </td> <td width="217"> <p>テスト</p> </td> </tr> <tr> <td width="134"> <p> </p> </td> <td width="217"> <p> </p> </td> </tr> </table> <div id="test1" style="display:none;"> テスト1を選択しています。 (本来はここに2行追加したい) </div> </body> </html> |
|
投稿日時: 2005-12-20 01:06
こんにちは。
少し期待値とは異なると思いますが、こういう対策が手軽でいいと思います。 ---------- <div id="test1" style="display:none;"> <table border="1" width="367"> <tr><td width="134"> テスト1を選択しています。 </td><td width="217"> </td></tr> <tr><td> (本来はここに2行追加したい) </td><td> </td></tr> </table> </div> ---------- つなぎ目が見えますけど、テーブルのスタイルシートを調整すれば目立たなくすることができます。 DOMを使えばテーブル行の追加削除を動的に行うこともできるのですが、表示したり消したりということを簡単に行いたい用途では、ちょっと手間がかかりすぎると思います。 [ メッセージ編集済み 編集者: 流れプログラマ 編集日時 2005-12-20 01:07 ] |
|
投稿日時: 2005-12-20 09:37
スクリプトの最初の行は、
var value = sel.value; で良いですね。 それはともかく。 <div id="test1" style="display:none;"> テスト1を選択しています。<br/> (本来はここに2行追加したい) </div> こういうことじゃないんでしょうか? |
|
投稿日時: 2005-12-20 09:42
あ、誤解したかな。
test1のときは2行(3行?)、test2のときは1行(2行目以降を非表示)ということでしょうか。 それなら、divの中にdivを作って、そっちの表示を切り替えればいいのではないかと。 |
|
投稿日時: 2005-12-20 22:16
返信ありがとうございます。
お二方のレス、とても参考になりました。 一度やってみて、試してみます。 ありがとうございました。 |
1