Javascript 我不是在ie工作

Javascript 我不是在ie工作,javascript,onclick,Javascript,Onclick,我用JavaScript编写了一个手风琴风格的左导航,我遇到了一个问题,下面的代码在Chrome和Firefox中工作,但在IE中不工作 function navClick(clickedDD){ var numDD = document.getElementsByClassName('navDropdown'); var numArrow = document.getElementsByClassName('navUnfolded'); var selectedDD =

我用JavaScript编写了一个手风琴风格的左导航,我遇到了一个问题,下面的代码在Chrome和Firefox中工作,但在IE中不工作

function navClick(clickedDD){
    var numDD = document.getElementsByClassName('navDropdown');
    var numArrow = document.getElementsByClassName('navUnfolded');
    var selectedDD = document.getElementById('dd0' + clickedDD);
    var arrow = document.getElementById('arrow0' + clickedDD);
    if (selectedDD.style.display == 'none') {
        for (var i = numDD.length - 1; i >= 0; i--) {
            numDD[i].style.display = 'none';
        }
    }
    if (arrow.className == 'navFolded') {
        for (var i = numArrow.length - 1; i >= 0; i--) {
            numArrow[i].className = 'navFolded';
        }
    }
    if (selectedDD.style.display == 'none') {
        selectedDD.style.display = 'block';
        arrow.className = 'navUnfolded';
    } else {
        selectedDD.style.display = 'none';
        arrow.className = 'navFolded';
    }
}
我不确定是什么让它无法正常工作,但我怀疑是我在onclick中使用的“this.id”

<div id="1" onclick="navClick(this.id);">Content</div>
内容
我对JavaScript比较陌生,如果知道这有帮助的话。基本上,此函数首先查看单击的div是否显示,如果不显示,则在继续之前将所有div的display设置为none。如果它被显示,它什么也不做,因为下一位将处理它。对于箭头图像发生变化的div,后面也有类似的规则。然后,如果未显示该div,则会将其设置为“block”,否则会将其设置为“none”,这允许我在不打开/关闭其他div的情况下打开和关闭单个菜单div

我使用onclick函数收集的id来控制具有不同id的div,从函数顶部变量的底部可以看出。也许这就是IE变得敏感的地方


非常感谢您的帮助。

您在
中的id在
中的id在您的元素上,请尝试将id加引号:

<div id = '1' onClick="navClick(this.id);">

在元素上,尝试在引号中输入ID:

<div id = '1' onClick="navClick(this.id);">

IE8或更低版本中的GetElementsByCassName


如果您不想使用完整的库,可以尝试IE8及以下版本的兼容性方法。

getElementsByClassName
在IE8或以下版本中


如果您不想使用完整的库,您可以尝试IE8及以下兼容方法。

是否使用控制台读取错误?html属性值是否为字符串?如果是
id=“1”
?请检查如果对
id
值使用引号会发生什么情况:
Content
My bad,我实际上没有在此处定义id,但另一个javascript函数会添加id值。为了便于参考,我将其放在这里。请尝试在函数定义后添加
console.log(typeof clickedDD)
。这将告诉您它是否未定义,这将是问题所在。另外,您考虑过jQuery吗?它更易于使用,节省时间,并且是跨浏览器的。您是否使用控制台读取错误?html属性值是否为字符串?如果是
id=“1”
?请检查如果对
id
值使用引号会发生什么情况:
Content
My bad,我实际上没有在此处定义id,但另一个javascript函数会添加id值。为了便于参考,我将其放在这里。请尝试在函数定义后添加
console.log(typeof clickedDD)
。这将告诉您它是否未定义,这将是问题所在。另外,您考虑过jQuery吗?它更易于使用,节省时间,并且是跨浏览器的。这是真的,但所有模拟版本的IE似乎都可以使用。这是真的,但所有模拟版本的IE似乎都可以使用。非常好。这就是问题所在。非常感谢,太好了。这就是问题所在。非常感谢你。