名前 題名 ▼ takiさん > ▼ Mr.XRAYさん > > 冗談はともかくとして > > FireMonkey はモバイル開発をサポートしているんですから, > > 何かありそうな気もしないではないのですが. > > やはり HTML5 なのかな ? > > とりあえず、プルダウンできるようになりました。 > 純粋にHTMLとjavascriptで対応しました。 > > 見出しのメニュー項目をクリックするとその下にサブメニューが表示されます。 > 他の項目をクリックするとサブメニューは閉じ、選んだ項目のサブメニューが > 表示されます。 > メニューの外をクリックするとサブメニューは閉じます。 > > 仕組みですが、CSSの:hoverに書かれている<ul>の親のメニュー項目1<li>を > クリックしたら > <ul>に対してXX.style.display="block";を実行します。(あたりまえ〜♪) > > 変更前のHTML ---------------------------- > > <ul id='dropmenu'> > <li><p>メニュー項目1</p></li> <<-- ここをクリックしたら > <ul> <<-- ここをstyle.display="block";してやる > <li><a href=#><p>サブメニュー1</p></a></li> > <li><a href=#><p>サブメニュー2</p></a></li> > </ul> > </li> > <li><p>見出し項目2</p></li> > 以下略 > > 変更後のHTML ---------------------------- > > <ul id='dropmenu'> > <li onclick="clickMenu(this)" id="menu1"><p>メニュー項目1</p></li> > <ul> > <li><a href=#><p>サブメニュー1</p></a></li> > <li><a href=#><p>サブメニュー2</p></a></li> > </ul> > </li> > <li><p>見出し項目2</p></li> > 以下略 > > javascript ---------------------------- > > var actSubMenu=0; // 選択されたサブメニューを記憶する > > function clickMenu(e) > { > actSubMenu = getChildBytagName(e,"UL"); > } > > // 親elementからタグ名が一致する最初の子elementを得る > function getChildBytagName(eOya,tName) > { > var children = eOya.childNodes; > for (var i=0; i<children.length; i++){ > if (children.item(i).tagName === tName){ > return children.item(i); > } > } > } > > 次に、サブメニューを消す方法(イベント)が分からずに困りましたが、 > 結局<body>のイベントで実行することにしました。 > > 追加のHTML ---------------------------- > > <body onclick="ResetSetSubMenu()"> > > 追加のjavascript ---------------------------- > > function ResetSetSubMenu() > { > // サブメニューのリセット > var e = document.getElementById("menu1"); > var ce = getChildBytagName(e,"UL"); > ce.style.display = "none"; > // > // menu2〜は略 > // > // サブメニューのセット > if (actSubMenu){ > actSubMenu.style.display = "block"; > } > actSubMenu = 0; // すぐにリセットしておく > } > > 今回、 > onclick="clickMenu(this)" のthisに感動しました。 > それと、メニューは<body>に乗っかっているので、メニューをクリックすると > メニューのonclickの後に<body>のonclickも反応するのですね。 > 勉強になりました。 > > 我流なので無茶をしている・・・かもしれません。 > もっとスマートな方法をご存知の方はご教示ください。 > > マスター FireMonkeyでなくてスミマセン。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link