重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

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

A 回答 (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から割り出すのが簡単じゃないかな。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/09 13:36

★開閉状態をクッキーに保存してやり取りすれば良い。


・下の『参考URL』をどうぞ。

参考URL:http://www.red.oit-net.jp/tatsuya/java/cookie.htm
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/09 13:34

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/09 13:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!