• ベストアンサー

メニューのツリーを表示させると、cookieで、開いた状態を保存できる

メニューのツリーを表示させると、cookieで、開いた状態を保存できるようにしていますが…。 そのようなページを2ページ作っています。 ページAでツリー1を開くと、ページBでもツリー1が開いてしまいます。 ページBで開いたツリー1を閉じると、ページAのツリー1も閉じてしまいます。 この現象、何なんでしょうか? いつからこのような状態なのか、また何故こんなことになってしまったのか、 私には全然分かりません。 どうすればなおりますか?

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

同じドメインで、クッキーを共用していてかつキーの設定も同じにしてしまっているだけではないのでしょうか? 要は、同じクッキーを読み書きして処理しているので、(違うページなのに)同じように動作しているだけなのでは?

A-mizuno
質問者

お礼

<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>

A-mizuno
質問者

補足

回答ありがとうございます! ドメイン云々や、キーの設定がなんとかってのはあんまりよく分かりませんでしたが、 同じクッキーを読み書きして処理している、っていうのはなんとなく分かりました! ところでどう対処すればいいんでしょうか? お礼の方に書かせて頂いたタグを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>

関連するQ&A

  • 戻ってきた時ツリーメニューが開いているようにクッキーを保存させたい

    タイトルの通り、開いたツリーメニューからリンクを踏んで、またメニューのあるページに戻ってきた時にメニューを開いたままにしたいです。 色々と調べるうちにcookieを使うことはわかったのですが、どこもツリーメニューの方法が違うため載っているソースのどこを弄れば自分の使ったツリーメニューに対応させられるのかわかりませんでした。 javascriptを切った状態では開いたまま表示させたいので、ツリーメニューのソースは以下を参考にさせていただきました。 http://blog.ptlabo.net/index.php?id=06100064 これを利用して「戻ってきた時ツリーメニューを開いた状態に」することはできますか? できない場合、 ・cssオン、javascriptオフの状態では開いている ・ブラウザバックしたときに開いている この条件に合うツリーメニューであれば何でも良いのでお教えいただきたいです。 初心者ですので詳細にご教授いただければ幸いです。 よろしくお願いします。

  • ツリーメニューでのcookieの使用方法

    いつもお世話になっております。 毎回丁寧なご回答、本当にありがとうございます。 現在、JavaScriptを利用し、ツリーメニューを作成しているのですが、 次のページに行った際や戻った際、更新を押した際に、 先程まで開いていたツリーメニューが、閉じてしまわないように、 cookieを利用し開いた状態に保ちたいと思っております。 一応、参考になるサイトがあり出来たことは出来たのですが、 そちらの方法を利用すると上記の操作を行った際に、 全てのメニューが一瞬開いてしまう現象が起きてしまいます。 一瞬全て開いた後には先程までのメニューはちゃんと記憶され開いた状態です。 今回、この「全てのメニューが一瞬開いてしまう」といのを、 なんとか直したいと思っております。 またその他に、出来る限りのブラウザに対応させたいと思っております。 JavaScriptが有効なブラウザの場合は通常通りのツリーメニュー、 無効な場合は全てが展開された状態のメニュー等。 目標としてはPCショップのドスパラ様のようなツリーメニューにしたいと思っております。 なを、メニュー部は更新の手間等を考え、 SSIを使用しインクルードしており、外部ファイルにしております。 このJavaScriptに限らず、別なJavaScriptでも結構ですので、 具体的なサイトやJavaScript自体をお書き頂けると幸いです。 今回使用したJavaScriptを作成した作者様にも伺っているのですが、 まだ返答は得られておらず、当方でも出来る限り急ぎで対処したいため、 誠に勝手ながらこちらに質問させていただきました。 何卒宜しくお願いいたします。 なお、確認ブラウザはWinXP SP2 & IE6.0とFirefox2.0とNetscape 7.1です。 一応、現在参照しているJavaScriptのページを下記に記載いたします。 http://himajin.moo.jp/menu/menu1.html

  • Cookieの保存について

    Cookieの保存をするのに、 setcookie() を使っているのですが、setcookie()を実行したページ内で、var_dump($_COOKIE); で調べると保存されているのですが、違うページに移動すると、なぜか前のページで保存したCookieが消えてしまいます。 なぜでしょうか? 行程は、次のようにやっています。 ページA setcookie("A","1",time()+3600*24*30); var_dump($_COOKIE); 結果  array(3) { ["A"]=> string(1) "1" ["B"]=> string(1) "2" ["PHPSESSID"]=> string(32) "a83f0de87ebd6c3717873d3b6f7506f7" } ページBへ移動 var_dump($_COOKIE); 結果  array(2) { ["B"]=> string(1) "2" ["PHPSESSID"]=> string(32) "a83f0de87ebd6c3717873d3b6f7506f7" } よろしくお願いします。 環境:PHP4.4.1+Apache2.0+Windows2003(SP1)+IE6(SP1)

    • ベストアンサー
    • PHP
  • ツリーを使用したページで、クッキーを使うことでツリーを開いた状態に保つ

    ツリーを使用したページで、クッキーを使うことでツリーを開いた状態に保つようにしています。 質問はそのページを2つ(仮にページAとページB)作りたいことです。 2つのページで同じタグ(プログラム)を使うとページAとページBが連動してしまいます。 (*前の質問→http://okwave.jp/qa/q6291021.html) 連動してしまうことはクッキー名を変更することで解消されたのですが、 今度はページAからページBに行き、再びページAに戻った際、開いていたはずのツリーが閉じてしまっています。 (ページAからページB以外のページに飛んだときはクッキーはちゃんと機能しています) ツリーをクッキーで保存するようなページを2つ作りたい場合、どうすればいいのでしょうか? 教えて下さい。よろしくお願いします。 (何か分からないことがあればおっしゃって下さい。補足致します。言葉足らずですみません)

  • jqueryで開閉メニューの状態をcookie保存

    jqueryで開閉メニューの状態をcookie保存 現在、jqueryで開閉メニューの状態をcookieに保存したいと 考えております。 下記参考サイトをみて作成しているのですが、上手くいきません。 参考サイトのようにクリックしてからバウンドする動作は必要なく、 現在製作中のものと違う点は 参考サイトは <div class="section nav"> <h2 class="sub_nav_heading toggle">B</h2> <ul class="sub_nav"> <li><a href="">B-1</a></li> </ul> </div> このようなHTMLですが、 作成中の物は <fieldset class="section nav"> <legend class="sub_nav_heading toggle">エリア</legend> <div class="sub_nav"> <input type="radio" name="test" value="" /> </div> </fieldet> といったHTMLにしております。 どなたかご教授ください。 ※参考サイト http://5509.me/sample/slidenav-with-cookie/ 宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • ツリーメニューの作成

    ツリーメニューの表示ができません。 記述は以下のとおりです (ヘッダー内) メタタグで標準スクリプト指定 <meta http-equiv="Content-Script-Style" content="text/javascript"> ツリーメニューの記述(某サイトよりコピペ) <script language="JavaScript"> <!-- function ok(id){if(document.all(id).style.display == "none"){document.all(id).style.display="block";}else{document.all(id).style.display="none";}} //--> </SCRIPT> ボディ内 (実際にツリーメニューを表示させる箇所) <A HREF="JavaScript:ok('tree1');"> ■メニュー </A> <div id="tree1" style="display:none;"> ツリー1<br> ツリー2<br> ツリー3<br> </div> ///////////////////////////////////////////////////////////// こんな感じです。 以前別のHTMLファイルで、ツリーメニューをつくったときには 正常に表示(クリックすると、ずらずらと出てくる)のに、今回同じソース(というのですか?)で記述してみたら、ダメでした。 「このページは表示できません」とかなります。

  • ツリーメニューについて質問です。

    ツリーメニューについて質問です。 いくつかのサイトを参考にし、コピー&ペーストでjavascriptを使ってツリーメニューを作成したのですが、ツリーメニューが展開された状態で表示されてしまいます。 閉じた状態で表示したいのですが、どうすればいいでしょうか。 ここにソースを載せようと思いましたが入りませんでしたので、載せられません。 主に参考にしたのは、このサイトです。 http://himajin.moo.jp/java/menu2.html このサイトのものに何を足せば良い、とかそのようなソースが載っているサイトがもしあれば教えてほしいです。 よろしくお願いします。 ちなみに私は超初心者です><

  • ツリー式メニュー

    自分のHP内にツリー式メニュ―(三段)を設置したいんですが、 クリックしていくごとに↓のように表示されるものを 作りたいんです。 ■メニュー  ┣■A  ┃ ┣■リンク1  ┃ ┣■リンク2  ┣■B  ┃ ┣■リンク3  ┃ ┣■リンク4  ┃ ちなみに■部分は画像を使っています。 二段目までのツリー表示は出来るんですが…。 どなたか分かる方、お願いします。

  • ツリーメニューについて

    私はクリックすると下に文字が出るツリーメニューを使ったのですが クリックすると下に文字が出、かつフレームで二分割した右側に他のページを表示させる方法が知りたいです。 拙い説明で申し訳ありません。 HTMLタグは大体は理解していると思います。javascriptはまだよく分かっていません。 ツリーメニューも付け焼刃で使っています。 なので、参考にできそうなサイト様をお教えいただくか もしくは細かく説明していただけるとありがたいです。 サイトのURL:http://artclub.ojaru.jp/frame.html よろしくお願いします。

  • ツリーメニューが・・・

    こんにちは、初めまして。 いまHPのギャラリーページで、 ツリーメニューを使って作っているんですが、 2個め?のメニューが何故かリンクになってしまうんです。 説明が下手で解りづらくてすみませんが、 わかる方いらっしゃったら教えて下さい>< お願いします。

専門家に質問してみよう