我正在用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"
周围缺少引号。