解決済み

Java script でのツリーメニューの表示非表示について

  • 困ってます
  • 質問No.4170413
  • 閲覧数687
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 44% (13/29)

まったくのJavascript 初心者です。
過去ログで似たようなものを見つけましたが、私には難しすぎてよくわかりませんでした。
お時間があればどうぞ教えてください。

ツリーメニューを作りたいと思っています。
大分類をクリックすると、その下のカテゴリメニューを表示したり、非表示にしたりするメニューです。
とりあえずこれはできるようになったのですが、
その下のメニューをクリックして、他のページに移動すると、元通り、すべてのカテゴリメニューがリセットされて閉じてしまっています。
リンクで移動しても、カテゴリメニューが開いたままにしたいのですが、どうしてもできません。

ソースは以下のとおりです。
初心者で本当に申し訳ありませんが、どうぞ教えてください。
よろしくお願いします。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang=ja dir=ltr xml:lang="ja"
xmlns="http://www.w3.org/1999/xhtml">>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>無題ドキュメント</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<SCRIPT language=JavaScript>

<!--
function OpenCategory(n){
if(document.all){
menu = document.all(n);
flag = menu.style.display;
if(flag == "block"){
menu.style.display = "none";
document.cookie=n+"=0; expires=Thu, 1-1-2099 0:0:0; path=/;";
}
else{
menu.style.display = "block";
document.cookie=n+"=1; expires=Thu, 1-1-2099 0:0:0; path=/;";
}

}
else if(document.getElementById){
menu = document.getElementById(n);
flag = menu.style.display;
if(flag == "block"){
menu.style.display = "none";
document.cookie=n+"=0; expires=Thu, 1-1-2099 0:0:0; path=/;";
}
else{
menu.style.display = "block";
document.cookie=n+"=1; expires=Thu, 1-1-2099 0:0:0; path=/;";
}

}
}
// -->
</SCRIPT>
</head>

<body leftmargin="0" topmargin="0" class="bg1">

<table width="150" align="left" cellpadding="0" cellspacing="0">
<tr>
<td height="5"></td>
</tr>
<tr>
<td height="30"><a onclick="OpenCategory('folder5'); return false;" href="#">大分類</a></td>
</tr>
<tr >
<td > <div class="folder5" id="folder5" style="DISPLAY: none">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr height="18">
<td height="18">L</td>
<td><p><a href="test2.htm" target="_self" >メニュー1</a></p></td>
</tr>
<tr height="18">
<td height="18">L</td>
<td><a href="test3.htm" target="_parent" >メニュー2</a></td>
</tr>
<tr height="18">
<td height="18">L</td>
<td><a href="test4.htm" target="_parent" >メニュー3</a></td>
</tr>
<tr height="18">
<td height="18">&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</div></td>
</tr>
</table>
あいうえお
</body>
</html>

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

  • 回答No.2

ベストアンサー率 43% (130/296)

>> 実はこのプログラムは、人のものをそのままコピーしただけなんです。

念のためですが、著作権者の了解は得ているのでしょうか?
まだ微妙な問題ではありますが、ソースコードにも著作権が発生します。
Webページはその性質上、ソースコードを隠すことは困難であり、公開が原則となりますが
だからといって著作権者に了解無く、他者に公開していいものではありません。

今回のようなソースコードくらいでは、いちいちどーのこーの言う人はいないと思いますが
今後ご自身のために気をつけるようにした方が良いかと思います。

ご理解されている上で投稿されていらっしゃるなら出しゃばりました。
スルーしてください。


>> Javaに関する記述はこれしかないのですが、

JavaScriptとJavaは名称こそ似ていますが全く別物です。
質問者様がプログラムを始めたばかりの方なら
「細かいなぁ」くらい思うかもしれませんが
これは勘違いを防ぐためにも必ず使い分けてください。
ただの誤字なら失礼しました。スルーしてください。


>> そのサイトはうまくメニューが開いたままになっているんです。

jsファイルが他にないのであれば、CGIなどサーバサイドで制御しているのだと思われます。


>> 私もわからないなりに、Cookieに
>> document.cookie=n+"=0; expires=Thu, 1-1-2099 0:0:0; path=/;";
>> で保存しているのかなとは思うのですが、、、

保存はしていますが、質問の例文を眺めていると
保存したクッキーを読み出している箇所が見当たらない、という意味です。
クッキーにフラグはセットしているのですから
あとはクッキーに保存したフラグを取り出して画面表示を変更する関数を作成し、
それを画面表示時に呼び出すようにすれば良いだけです。
お礼コメント
himahima_san

お礼率 44% (13/29)

いろいろとご教授いただき、ありがとうございました。
投稿日時 - 2008-08-18 10:21:41
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 43% (130/296)

クッキーから何もデータを読み出していないように見えますが‥?
お礼コメント
himahima_san

お礼率 44% (13/29)

早速のご回答ありがとうございます。
実はこのプログラムは、人のものをそのままコピーしただけなんです。
(まったく知識がないものですから)
何度そのプログラムを見ても、Javaに関する記述はこれしかないのですが、
そのサイトはうまくメニューが開いたままになっているんです。
私もわからないなりに、Cookieに
document.cookie=n+"=0; expires=Thu, 1-1-2099 0:0:0; path=/;";
で保存しているのかなとは思うのですが、、、

もっと勉強が必要ですね。
すいませんでした。
投稿日時 - 2008-07-12 19:20:04
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ