这个程序大家来看看 先跑一下程序再回答把,可以把下面2句注释掉,不是下面2句的问题else menu.style.display="none"; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我本来是想做个无限展开的菜单,用来显示目录树的前面还这样作过<html><head><script>function pop(i){ var menu = document.getElementsByTagName("ul"); var len = document.getElementsByTagName("ul").length; var k = len - i; if(menu[k].style.display=="none") menu[k].style.display="block"; else menu[k].style.display="none"; //var len = document.getElementsByTagName("ul").length; var html = ""; for(var j = 2; j >= 1; j--) { html = html + "<li onClick='pop(" + (i + j - 1) + ")'>123</li><ul style='display:none'></ul>"; } menu[k].innerHTML = html;}</script></head><body><ul><%for(int i = 3; i >= 1; i--){%><li onClick="pop(<%=i%>)"><%=i%><script>document.write(document.getElementsByTagName("ul").length);</script></li><ul style="display:none"></ul><%}%></ul></body></html>由于参数关系复杂,没成功,放弃了.任何人能把2个程序之一首先修改成功都可以得50分 问题的本质在于你点击了子菜单后由于冒泡事件响应机制又调用了一遍根节点的pop事件,所以点不下去了只要在function pop(id)中加一句event.cancelBubble = true;即可function pop(id) { event.cancelBubble = true;var menu = document.getElementById(id); if(menu.style.display=="none") menu.style.display="block"; else menu.style.display="none"; var html = ""; var id2 = ""; for(var j = 1; j <= 2; j++) { id2 = id + j; html += " <li onclick=pop('"+id2+"')>123</li ><ul id='"+id2+"' style='display:none'> </ul >"; } menu.innerHTML = html; //document.write(id2); } 如何用Javascript实现字符串搜索 上传文件在不同服务器,文件编码不同 求rico.js,prototype.js讲解! 购物车未清空时,跳转页前判断. 缺少对象 使用onkeyup事件如何支持ctrl+z Javascript和JSscript有什麼不同?哪裡有JSscript的學習資料? 我的JAVASCRIPT为什么没起作用? 有输出就刷新 一个input中输入值的同时,对另外一个input进行判断,按条件报错 radio button的判断问题 层移动兼容问题
前面还这样作过
<html>
<head>
<script>
function pop(i)
{
var menu = document.getElementsByTagName("ul");
var len = document.getElementsByTagName("ul").length;
var k = len - i;
if(menu[k].style.display=="none")
menu[k].style.display="block";
else
menu[k].style.display="none";
//var len = document.getElementsByTagName("ul").length;
var html = "";
for(var j = 2; j >= 1; j--)
{
html = html + "<li onClick='pop(" + (i + j - 1) + ")'>123</li><ul style='display:none'></ul>";
}
menu[k].innerHTML = html;
}
</script>
</head>
<body>
<ul><%
for(int i = 3; i >= 1; i--)
{
%>
<li onClick="pop(<%=i%>)"><%=i%><script>document.write(document.getElementsByTagName("ul").length);</script></li>
<ul style="display:none">
</ul>
<%}%></ul>
</body>
</html>由于参数关系复杂,没成功,放弃了.任何人能把2个程序之一首先修改成功都可以得50分
又调用了一遍根节点的pop事件,所以点不下去了只要在function pop(id)中加一句event.cancelBubble = true;即可function pop(id)
{
event.cancelBubble = true;
var menu = document.getElementById(id); if(menu.style.display=="none")
menu.style.display="block";
else
menu.style.display="none"; var html = "";
var id2 = "";
for(var j = 1; j <= 2; j++)
{
id2 = id + j;
html += " <li onclick=pop('"+id2+"')>123</li ><ul id='"+id2+"' style='display:none'> </ul >";
}
menu.innerHTML = html;
//document.write(id2);
}