こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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のコードを組込んでいるので、できれば中の部分はいじりたくありません)。

お詳しい方、大変恐れ入りますが、どうぞご教示くださいませ。
よろしくお願いいたします。

投稿日時 - 2007-04-06 19:53:13

QNo.2899710

すぐに回答ほしいです

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

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から割り出すのが簡単じゃないかな。

投稿日時 - 2007-04-08 04:56:23

お礼

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

投稿日時 - 2007-04-09 13:36:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

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

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

投稿日時 - 2007-04-06 21:43:18

お礼

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

投稿日時 - 2007-04-09 13:34:02

ANo.1

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

投稿日時 - 2007-04-06 20:16:18

お礼

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

投稿日時 - 2007-04-09 13:32:00

あなたにオススメの質問