• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルで複数行をまとめて非表示にしたいです)

テーブルで複数行をまとめて非表示にしたい方法

このQ&Aのポイント
  • JavaScriptを使用して、テーブルで複数行をまとめて非表示にする方法について教えてください。
  • 現在、質問者はgetElementsByClassName関数を使用してクラス名を指定して複数行を非表示にしようとしていますが、うまくいきません。
  • 質問者はgetElementByID関数を使用して一行ずつ非表示にすることはできたそうですが、クラス名を指定してまとめて非表示にする方法がわからないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

こんな感じでどう? <style> tr.hide{display:none;} tr.display{display:table-row !important;} </style> <!--[if IE]> <style> tr.display{display:block !important;} </style> <![endif]--> <script> function open_close_rowhide(obj){ var v=obj.innerHTML; var tr=document.getElementsByTagName("tr"); for(var i=0;i<tr.length;i++){ var cn=tr[i].className; if(cn.match(/(^| )hide(?= |$)/)){ if(cn.match(/(^| )display(?= |$)/) && v=="非表示"){ cn=cn.replace(/(^| )display(?= |$)/,''); }else if(!cn.match(/(^| )display(?= |$)/) && v=="表示"){ cn+=" display"; } tr[i].className=cn; } } obj.innerHTML=v=="表示"?"非表示":"表示"; return false; } </script> <a href="#" onClick="return open_close_rowhide(this);">表示</a> <table border> <tr><th>test</th></tr> <tr><td>1</td></tr> <tr class="hide"><td>2</td></tr> <tr><td>3</td></tr> <tr><td>4</td></tr> <tr class="hide display"><td>5</td></tr> <tr class="hide display aaa"><td>6</td></tr> </table>

iwakism
質問者

お礼

回答ありがとうございます。 まさにやりたかった挙動を完璧にしてくれました。 書きませんでしたが、最初は非表示にしておきたかったので、その点でも完璧です。 PHPからの出力でしたが、それも問題ありませんでした。 しかし、何回読んでもコードの意味が難しくて分からない・・・これを機にもっと勉強したいと思います。 どうもありがとうございました。

その他の回答 (2)

回答No.2

getElementsByClassNameを使用し、ループ処理で1つずつセットしてください。

iwakism
質問者

お礼

回答ありがとうございます。 やっぱりループ処理を使わないとダメですか。 もっと勉強します。 ありがとうございました。

回答No.1

リファレンスをしっかり読みましょう。 getElementsByClassなんてものは定義されていません。

参考URL:
http://www.openspc2.org/JavaScript/JavaScript_DOM/index.html
iwakism
質問者

お礼

回答ありがとうございます。 そもそも定義されていなかったのですか・・・。 もっと勉強します、ありがとうございました。

関連するQ&A

専門家に質問してみよう