Javascript 下拉菜单将不起作用
我有一个下拉菜单,应该有四个不同的菜单选项,每个都有相同的类。但是我的代码不起作用。我希望它能与chrome和IE一起工作。它崩溃的情况在我的init方法中。控制台抱怨如下:对象#没有方法“getElementsByTagName”。有解决办法吗Javascript 下拉菜单将不起作用,javascript,html,function,drop-down-menu,Javascript,Html,Function,Drop Down Menu,我有一个下拉菜单,应该有四个不同的菜单选项,每个都有相同的类。但是我的代码不起作用。我希望它能与chrome和IE一起工作。它崩溃的情况在我的init方法中。控制台抱怨如下:对象#没有方法“getElementsByTagName”。有解决办法吗 function hideorShowField(list) { var nodes = list.getElementsByTagName("li"); for (i = 1; i < nodes.length; i++) {
function hideorShowField(list) {
var nodes = list.getElementsByTagName("li");
for (i = 1; i < nodes.length; i++) {
if (nodes[i].style.display == 'none') {
nodes[i].style.display = 'block';
}
else {
nodes[i].style.display = 'none';
}
}
}
function init() {
var list = document.getElementsByClassName("undermeny");
list1.getElementsByTagName("li")[0].onclick = function () {
hideorShowField(list);
};
}
window.onload = init;
函数hideorShowField(列表){
var nodes=list.getElementsByTagName(“li”);
对于(i=1;i
我的html代码:
<ul class="undermeny" >
<li>Opinion</li>
<li><a href="#">Ledare</a></li>
<li><a href="#">Aktuella frågor</a></li>
<li><a href="#">Per T Ohlsson</a></li>
<li><a href="#">Magda Forsberg</a></li>
</ul>
<ul class="undermeny" >
<li>Lokalt/Globalt</li>
<li><a href="#">Malmö</a></li>
<li><a href="#">Lund</a></li>
<li><a href="#">Limhamn</a></li>
<li><a href="#">Burlöv</a></li>
<li><a href="#">Eslöv</a></li>
<li><a href="#">Höör</a></li>
<li><a href="#">Kävlinge</a></li>
<li><a href="#">Lomma</a></li>
<li><a href="#">Svedala</a></li>
<li><a href="#">Staffanstorp</a></li>
<li><a href="#">Trelleborg</a></li>
<li><a href="#">Vellinge</a></li>
<li><a href="#">Sverige</a></li>
<li><a href="#">Öresund</a></li>
<li><a href="#">Världen</a></li>
<li><a href="#">Väder</a></li>
</ul>
<ul class="undermeny" >
<li>Ekonomi</li>
<li><a href="#">Nyheter</a></li>
<li><a href="#">Privata pengar</a></li>
<li><a href="#">Börs</a></li>
<li><a href="#">Fonder</a></li>
</ul>
<ul class="undermeny">
<li>Sport</li>
<li><a href="#">Fotboll</a></li>
<li><a href="#">Ishockey</a></li>
<li><a href="#">Handboll</a></li>
<li><a href="#">Fridrott</a></li>
</ul>
- 意见
- 洛卡尔特/格洛巴特
- 埃科诺米
- 运动
getElementsByClassName()
返回一个nodeList
以及getElementsByTagName()
。所以你可能需要这个:
list[0].getElementsByTagName("li")[0].onclick = function () {...};
或者,您必须迭代列表
以将EventHandler附加到ul
s中带有类的li
元素中的所有第一个元素。大概是这样的:
for (var n = 0; n < list.length; n++) {
list[n].getElementsByTagName("li")[0].onclick = function () {...};
}
for(var n=0;n
列表1
尚未初始化(尽管列表
已初始化)。修复输入错误,然后您可以迭代列表中的项目,对每个项目调用getElementsByTagName()
。我注意到list1.getElementsByTagName(“li”)[0].onclick=function(){hideorShowField(list);};应该是列表而不是列表1。但还是不行