Elements By ClassName Failing



我正在用JavaScript创建滑动菜单,下面是我的init()函数:

function init() {
   var menus = new Array();
   var allElems = document.getElementsByTagName("*");
   for (var i = 0; i < allElems.length; i++) {
      alert(allElems[i]);
      if (allElems[i].className == "navG") {
      alert(allElems[i]);
      menus.push(allElems[i]); 
      }
   }
   /* assign the openMenu function to the onclick event for each
      Menus item */
    for (var i = 0; i < menus.length; i++) {
       alert(menus[i]);
       menus[i].onclick=openMenu;
    }
    document.getElementById("logo").onclick = closeMenu;
    document.getElementById("linkList").onclick = closeMenu;
    document.getElementById("main").onclick = closeMenu;
}

问题似乎出现在第一个for循环中。这绝对是正确的类名。。仅供参考,这是我所指的HTML类型:

<div class="navG" id="gallery1" style="position: absolute; top: 180px; left: -150px; " >

有没有一个明显的,或者不那么明显的原因,这不是在菜单中添加元素?

这里有一个错误

document.getElementById("logo").onclick = closeMenu();
document.getElementById("linkList").onclick = closeMenu();
document.getElementById("main").onclick = closeMenu();

您调用closeMenu,而不是分配它。

需要

document.getElementById("logo").onclick = closeMenu;
document.getElementById("linkList").onclick = closeMenu;
document.getElementById("main").onclick = closeMenu;

在链接到的页面中,在family.js脚本中,这一行:

window.onLoad = init();

表示立即运行init函数并将其返回值分配给window.onLoad。因为它是立即运行的,所以实际的文档还没有被解析,所以它找不到任何元素。你需要这样说:

window.onload = init;

其将对CCD_ 5函数的引用分配给CCD_。

此外,onload应具有小写的l

(您的代码中还有一些其他问题,例如,您似乎没有ID为"linkList""main"的元素,但我认为我上面所说的是您所询问的部分的主要问题。)

Whoops,在第一个循环中,"navG"周围缺少引号。

最新更新