this.id不工作在ie

时间:2012-11-26 19:22:28

标签: javascript onclick

我一直在使用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的显示设置为none。如果显示,它什么都不做,因为下一位将处理它。对于具有变化的箭头图像的div,之后有类似的规则。然后,如果没有显示div,则将其设置为“阻止”,否则将其设置为“无”,这样我就可以打开和关闭单个菜单div,而无需打开/关闭其他菜单。

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

感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

在你的元素上,尝试将ID放在引号中:

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

你也可以尝试使用javascript的'Alert'功能来找出IE中的数据:

alert(selectedDD); 

答案 1 :(得分:1)

IE8或更低版本中的

getElementsByClassName isn't supported

如果您不想使用完整的库,可以尝试使用Jonathan Snook's方法获取IE8及以下兼容性。

答案 2 :(得分:0)

<div id="1" ..中的您的ID不是有效身份:

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

所以请尝试将其更改为有效的(例如。#a1),因为这可能是导致问题的原因。