2013-06-23 27 views
0

请帮助使用此功能的滑动菜单。对于slideMenus数组中的每个对象,我想引用该对象中的第一个无序列表元素,并将ul元素左侧样式属性的值设置为0px。请帮忙!谢谢!javascript滑动菜单 - 如何引用嵌套的html元素?

function makeMenus(){ 
var slideMenus=new Array(); 
var allElems=document.getElementsByTagName("*"); 
for(var i=0;i<allElems.length;i++){ 
     if(allElems[i].className=="slideMenus")menus.push(allElems[i]); 
} 
for(var i=0;i<slideMenus.length;i++){ 
    slideMenus[i].onclick=showSlide; 
    slideMenus[i].ul.style.left="0px"; 
    /*for each object in slideMenus Array, 
    ref 1st ul element within that object 
    and set the value of the ul elements 
    left style property to 0px */ 
} 
document.getElementById("head").onclick=closeSlide; 
document.getElementById("main").onclick=closeSlide; 

}

+1

你会考虑使用JQuery或另一个库来简化和增强节点选择? – MasterAM

+0

谢谢你的建议,我刚开始学习Javascript,但很多人告诉我,我应该开始jquery – Vynce82

+0

@ Vynce82恕我直言,你应该继续学习JavaScript之后,你可以学习jQuery,这样你就可以应用JavaScript或jQuery的根据情况。 –

回答

1

可以使用的getElementsByTagName获得UL

function makeMenus(){ 

//No need to get all the nodes in the page, you can just get elements by class name. 
var slideMenus = document.getElementsByClassName("slideMenus"); 

for(var i=0;i<slideMenus.length;i++){ 
    slideMenus[i].onclick = showSlide; 
    slideMenus[i].getElementsByTagName("ul")[0].style.left = "0px"; 
} 
document.getElementById("head").onclick=closeSlide; 
document.getElementById("main").onclick=closeSlide; 
} 
+0

太棒了!谢谢巴拉吉! – Vynce82

+0

@ Vynce82作为一项改进,您可以添加事件监听器,而不是直接onclick。将来,如果您希望在单击元素时再执行一项操作,则可以轻松添加另一个侦听器。 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener –