0

私のJoomlaテンプレートでは、サブメニューonclickを開くときに下の要素を「押し出す」ドロップダウンを含む垂直メニューを作成しました。なんだかやる気が出ない..

LI 内で UL を取得しようとしていますが、UL がクラスまたは ID を持たずに JavaScript でこれを行うにはどうすればよいですか。

私はまだこれに来ました:

function getElements(){
var listitems = {};
for(var i = 0; i< arguments.length; i++){
    var id = arguments[i];
    var item = navigation.getElementsByTagName("li");
    if (item == null)
        throw new Error ("No list items found.");
    listitems[id] = item;
}
return listitems;
}

今、私は次のようなものを得る必要があります:(私は今、次のコードは不可能ですが、私がしようとしていることを説明しています)

var nav = document.getElementById("navigation");
var nestedList = nav ul li ul;
nestedList.onclick(nav ul li ul.style = "display: block";);

HTML は次のようになります。

<div id="navigation">
<ul>
<li class="parent">
    <ul><li></li></ul>
</li>
</ul>
</div>

CSS は次のようになります。

#navigation ul li ul{display: none;}

今、私はそれを表示したい: .parent をクリックしたときのブロック

ありがとう!

4

2 に答える 2

1

あなたのページには既に MooTools が含まれているので、次のような方法で動作するはずです (ここでは MooTools の専門家ではありません)。

$('#navigation li.parent').addEvent('click', function () {
  $('#navigation li.parent ul li ul').setStyle('display', 'block');
});


古い投稿:

純粋な JS (これは完全なコードではありません。クリック リスナーを追加してスタイルを適用するには、要素を数回ループする必要があります):

var listItems = document.querySelectorAll("nav ul li ul");
var count = listItems.length;

for (var i=0; i<count; i++) {
  var item = listItems.get(i);
  item.style.display = "block";
}
于 2013-09-27T19:40:13.613 に答える
0

もちろん、最も簡単なのは jQuery やその他のライブラリを使用することです。最新のブラウザー用の純粋な JavaScript でこれを行うには、JS querySelectorを使用します。そうしないと、これに多くの時間を費やすことになります。

于 2013-09-27T19:39:19.300 に答える