我一直在使用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变得敏感的地方。
感谢任何帮助。
答案 0 :(得分:3)
在你的元素上,尝试将ID放在引号中:
<div id = '1' onClick="navClick(this.id);">
你也可以尝试使用javascript的'Alert'功能来找出IE中的数据:
alert(selectedDD);
答案 1 :(得分:1)
getElementsByClassName
isn't supported。
如果您不想使用完整的库,可以尝试使用Jonathan Snook's方法获取IE8及以下兼容性。
答案 2 :(得分:0)
<div id="1" ..
中的您的ID不是有效身份:
ID和NAME令牌必须以字母([A-Za-z])开头,可能是 后跟任意数量的字母,数字([0-9]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。
所以请尝试将其更改为有效的(例如。#a1
),因为这可能是导致问题的原因。