getElementById를 사용하는 일부 JavaScript에 문제가 있습니다. 그것은 FF, 사파리와 크롬에서 잘 작동하지만 IE (8 - 다른 시도하지 않은) 보석금. 내 자바 스크립트에서getElementById에 Internet Explorer 오류가 발생했습니다.
<div id="topnav">
... some HTML ...
<div>
<div id="sub_1" class="lowernav">
... some HTML ...
</div>
<div id="sub_2" class="lowernav">
... some HTML ...
</div>
, 나는 topnav를 찾으려면 :
HTML의 해당 비트 사업부라는 topnav입니다.
내가 잘못 여기서 뭔가를하고 있는가 ...<script>
window.onload = init();
function init() {
// Show current menu
showCurrentMenu();
}
function showCurrentMenu() {
hideMenus(); // Hide all menus and then show the current one
topnav = document.getElementById('topnav');
... rest of code ...
}
function hideMenus() {
var divlist = document.getElementsByTagName('div');
for(var ii=0; ii<divlist.length; ii++) {
if(divlist[ii].className != divlist[ii].className.replace('lowernav','')) {
divlist[ii].className += ' hidden';
}
}
}
가 ... 다음 다른 코드 아직 도달하지 않은 : (가 보석금 곳까지) 전체 코드는 무엇입니까? 그것은 정말로 명백한 무엇인가일지도 모른다. 그러나 나의 인생 동안, 나는 그것을 볼 수 없다! 모든 조언을 많이 주시면 감사하겠습니다.
ETA : 그것은 현재의 약자로 좋아, 여기에 전체 코드는 다음과 같습니다
이<script>
window.onload = init;
function init() {
// Show current menu
showCurrentMenu;
// Attach 'onmouseover' event to main menu items
topnav = document.getElementById('topnav');
// Get all items in list
var menulist = topnav.getElementsByTagName('a');
for(var ii=0; ii<menulist.length; ii++) {
menulist[ii].onmouseover = showMenu;
}
document.getElementById('mainHomeNav').onmouseout = restoreMenu;
}
function restoreMenu(e) {
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
if (targ.id == "mainHomeNav") {
showCurrentMenu;
}
}
function hideMenus() {
var divlist = document.getElementsByTagName('div');
for(var ii=0; ii<divlist.length; ii++) {
if(divlist[ii].className != divlist[ii].className.replace('lowernav','')) {
divlist[ii].className += ' hidden';
}
}
}
function showCurrentMenu() {
hideMenus;
topnav = document.getElementById('topnav');
// Get all items in list
var menulist = topnav.getElementsByTagName('a');
for(var ii=0; ii<menulist.length; ii++) {
if(menulist[ii].className != menulist[ii].className.replace('thisSection','')) {
var thisid = menulist[ii].id;
var thissubmenu = document.getElementById(thisid + '_sub');
thissubmenu.className = thissubmenu.className.replace(/hidden/g,'');
}
}
}
function showMenu() {
hideMenus;
// show this menu
var submenu_id = this.id + '_sub';
var submenu = document.getElementById(submenu_id);
submenu.className = submenu.className.replace(/hidden/g,'');
}
</script>
+1 올바른 답변입니다. 쉽게 실수를 할 수 있으며, 디버깅을 시도 할 때 쉽게 놓칠 수 있습니다. – Spudley