• ベストアンサー

折たたみメニューの表示・非表示

JavaScriptで下記のような折りたたみ(階層)メニューを作成しています。 <script type="text/javascript"> <!-- /* ブラウザ判別 */ var ie=document.all ? 1 : 0; var ns6=document.getElementById&&!document.all ? 1 : 0; var opera=window.opera ? 1 : 0; /* 子メニューの表示・非表示切替 */ function openFolder(childObj, parentObj){ var child=""; var parent=""; var sw="../../images/blanc.gif"; /* フォルダ表示時のアイコン画像 */ var hd="../../images/blanc.gif"; /* フォルダ非表示時のアイコン画像 */ if(ie || ns6 || opera){ child=ns6 ? document.getElementById(childObj).style : document.all(childObj).style; parent=ns6 ? document.getElementById(parentObj) : document.all(parentObj); if (child.display=="none"){ child.display="block"; parent.src=sw; }else{ child.display="none"; parent.src=hd; } } } //--> </script> <div id="open_1" style="display:none;"> <a href="01.html"><img src="images/list_01.gif"></a><br> <a href="02.html"><img src="images/list_02.gif"></a><br> </div> <div id="open_2" style="display:none;"> <a href="03.html"><img src="images/list_03.gif"></a><br> <a href="04.html"><img src="images/list_04.gif"></a><br> </div> <div id="open_3" style="display:none;"> <a href="04.html"><img src="images/list_03.gif"></a><br> <a href="05.html"><img src="images/list_04.gif"></a><br> </div> ここで、<div id="open_1">内のリンクをクリックして01.htmlに遷移した際、01.htmlでも<div id="open_1">内の階層が表示されているようにしたいのです(下のふたつの階層についても同じです)。 過去ログなどを調べまして、 <script type="text/javascript"><!-- function keepOpen(){ document.getElementById('x').style.display = "block"; document.getElementById('y').style.display = "block"; }keepOpen(); //--></script> を挿入すればいけそうでやってみたのですが、今度は開きっぱなしになってしまいます。二日ほど調べたのですが、よい解決策が見つかりません(また、<div>の中のソースはすでにphpのコードを組込んでいるので、できれば中の部分はいじりたくありません)。 お詳しい方、大変恐れ入りますが、どうぞご教示くださいませ。 よろしくお願いいたします。

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

  • ベストアンサー
noname#30818
noname#30818
回答No.3

var url = window.location + "" var a = document.getElementsTagName('a') for(var i = 0;i < a.length;i++){ var href = a[i].href if(url.indexOf(href) != -1){ childObj = a[i].parentNode.id//かな? parentObj = a[i].parentNode.parentNode.id//かな? break; } } 単純にURLから割り出すのが簡単じゃないかな。

41711840
質問者

お礼

スクリプトを書いていただいてありがとうございました。 入れてみましたが、ブラウザによって動作しない場合があるようです。 PHPでJavaScriptを出力する方向で解決することになりました。 ありがとうございました。

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★開閉状態をクッキーに保存してやり取りすれば良い。 ・下の『参考URL』をどうぞ。

参考URL:
http://www.red.oit-net.jp/tatsuya/java/cookie.htm
41711840
質問者

お礼

参考URLをありがとうございました。 PHPでJavaScriptを出力する方向で解決することになりました。 ありがとうございました。

  • VCAT
  • ベストアンサー率20% (16/79)
回答No.1

クッキーでいけるのでは?

41711840
質問者

お礼

どこでクッキーをクリアするかが問題になり、クッキーを使わない方向で考えておりました。アドバイスありがとうございました。

関連するQ&A