• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ツリーメニューについて)

ツリーメニューを作成する際のクリック回数が多い問題

このQ&Aのポイント
  • Java Scriptのあいうえおを学んでいる最中の超初心者が作成しているツリーメニューで、クリック回数が多い問題が発生しています。
  • ツリーメニューはデフォルトで開いているため、メニューを3回ぐらいクリックしないと閉じません。
  • フラグを追加する必要がありますが、フラグの書き方がわからないため、助けを求めています。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

複数あったとしても同じ理屈だと思います localMenu01からlocalMenu10まであるなら var lMenuStackID; lMenuStackID = new Array(); lMenuStackID[1] = "localMenu01"; lMenuStackID[2] = "localMenu02"; lMenuStackID[3] = "localMenu03"; などとして配列であっ使います 実際の処理ルーチンを   function localMenu2(lyName,nIndex) {     var style, src, des, obj;     if ( lMenuStockID[nIndex] == lyName ) {       // 前回ONに設定したのでOFFに設定する       style = "none";       src = "on.";       des = "off.";       lMenuStockID[nIndex] = "";     } else {       // 前回OFFに設定したのでONに設定する       style = "block";       src = "off.";       des = "on.";       lMenuStockID[nIndex] = lyName;     }     // tdエレメントを取得     obj = document.getElementById( lyName );     obj.style.display = style;     // imgエレメントを取得     obj = document.getElementById( lyName + "Icon" );     obj.src = obj.src.replace( src, des );   } といった具合に 何番目のメニューを操作したいのかを nIndexに与えてやりましょう <a href="javascript:localMenu('localMenu02',2);"> といった具合にして呼び出します

ikazoozaki
質問者

お礼

迅速かつ丁寧なご回答を誠にありがとうございます。 お蔭様で、解決できました。 本当にありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

loadFlagは必要ないと思います lMenuStockIDと引数lyNameを比較すれば良いでしょう <script type="text/javascript"> <!--   // 外部変数にして前回の設定を保存   // 最初がONなので 『localMenu02』を初期値とする   var lMenuStockID = "localMenu02";   function localMenu2(lyName) {     var style, src, des, obj;     if ( lMenuStockID == lyName ) {       // 前回ONに設定したのでOFFに設定する       style = "none";       src = "on.";       des = "off.";       lMenuStockID="";     } else {       // 前回OFFに設定したのでONに設定する       style = "block";       src = "off.";       des = "on.";       lMenuStockID= lyName;     }     // tdエレメントを取得     obj = document.getElementById( lyName );     obj.style.display = style;     // imgエレメントを取得     obj = document.getElementById( lyName + "Icon" );     obj.src = obj.src.replace( src, des );   } //--> </script> といった具合でしょう

ikazoozaki
質問者

補足

早速ご回答いただ誠にありがとうございます。 初歩的なことをお伺いさせていただきます。 たとえば、「localMenu02」としていますが、 localMenu01~10(複数)ある場合はどうすればいいのでしょうか? 勉強不足でお恥ずかしいです。 恐れ入りますが、ご教示ください。