- ベストアンサー
メニューのツリーを表示させると、cookieで、開いた状態を保存できる
メニューのツリーを表示させると、cookieで、開いた状態を保存できるようにしていますが…。 そのようなページを2ページ作っています。 ページAでツリー1を開くと、ページBでもツリー1が開いてしまいます。 ページBで開いたツリー1を閉じると、ページAのツリー1も閉じてしまいます。 この現象、何なんでしょうか? いつからこのような状態なのか、また何故こんなことになってしまったのか、 私には全然分かりません。 どうすればなおりますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
同じドメインで、クッキーを共用していてかつキーの設定も同じにしてしまっているだけではないのでしょうか? 要は、同じクッキーを読み書きして処理しているので、(違うページなのに)同じように動作しているだけなのでは?
お礼
<script language=JavaScript ><!-- theName="menu="; //cookie名を変更 S_Array=new Array("treemenu"); //初めに表示するID名 ,"ID名" と増やします //---------------------------------------- d_Array=S_Array; function MyMenu_set(){ if(document.all) menu_obj=document.all; else menu_obj=document.getElementsByTagName("div"); for(i=0;i<menu_obj.length;i++){ if(menu_obj[i].className=="display_none") menu_obj[i].style.display="none"; } theCookie=document.cookie+";"; start=theCookie.indexOf(theName); if(start !=-1){ end=theCookie.indexOf(";",start); theData=unescape(theCookie.substring(start+theName.length,end)); d_Array=theData.match(/[^,]+/g); } if(d_Array=="all_none"){ d_Array=new Array(); return; } try { for(i=0;i<d_Array.length;i++){ if(document.all){ document.all(d_Array[i]).style.display="block"; }else{ document.getElementById(d_Array[i]).style.display="block"; } } }catch(e) {d_Array=new Array();} } function MyMenu(tName){ j=0; if(document.all){ tMenu=document.all(tName).style; }else{ tMenu=document.getElementById(tName).style; } if(tMenu.display=='none'){ tMenu.display="block"; for(i=0;i<d_Array.length;i++){if(tName==d_Array[i])j++;} if(!j)d_Array.push(tName); }else{ tMenu.display="none"; for(i=0;i<d_Array.length;i++){if(tName==d_Array[i])j=i;} d_Array.splice(j, 1); } } function MyMenu_close(){ myData="";setDay=new Date(); myData=(!d_Array.length)?"all_none":d_Array.join(","); setDay.setTime(setDay.getTime()+(1*1000*60*60*24)); document.cookie=theName+escape(myData)+";expires="+setDay.toGMTString(); } function firstMenu(){ setDay=new Date();myData=""; d_Array=S_Array; myData=(!d_Array.length)?"all_none":d_Array.join(","); setDay.setTime(setDay.getTime()+(1*1000*60*60*24)); document.cookie=theName+escape(myData)+";expires="+setDay.toGMTString(); location.reload(true); }/* himajin.moo.jp */ onload=MyMenu_set; onunload=MyMenu_close; // --></script>
補足
回答ありがとうございます! ドメイン云々や、キーの設定がなんとかってのはあんまりよく分かりませんでしたが、 同じクッキーを読み書きして処理している、っていうのはなんとなく分かりました! ところでどう対処すればいいんでしょうか? お礼の方に書かせて頂いたタグをHEADの間に入れて、 下に書いたタグを本文のメニューで使っています。 どこをどう変えればいいか、具体的なアドバイスを頂けると助かります…。 よろしくお願いします。 ※ぺージAでもページBでも同じタグ(プログラム?)を使っています。 <A href="javaScript:MyMenu('treeMenu1')">ツリー1</a><br> <DIV id="treeMenu1" class="display_none"> ┣<A href="aaa.html">aaa</A><BR> ┣<A href="bbb.html">bbb</A><BR> ┗<A href="ccc.html">ccc</A><BR> </DIV>