- ベストアンサー
ツリーメニューを作成する際のクリック回数が多い問題
- Java Scriptのあいうえおを学んでいる最中の超初心者が作成しているツリーメニューで、クリック回数が多い問題が発生しています。
- ツリーメニューはデフォルトで開いているため、メニューを3回ぐらいクリックしないと閉じません。
- フラグを追加する必要がありますが、フラグの書き方がわからないため、助けを求めています。
- みんなの回答 (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);"> といった具合にして呼び出します
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
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> といった具合でしょう
補足
早速ご回答いただ誠にありがとうございます。 初歩的なことをお伺いさせていただきます。 たとえば、「localMenu02」としていますが、 localMenu01~10(複数)ある場合はどうすればいいのでしょうか? 勉強不足でお恥ずかしいです。 恐れ入りますが、ご教示ください。
お礼
迅速かつ丁寧なご回答を誠にありがとうございます。 お蔭様で、解決できました。 本当にありがとうございました。