问题是:
当点击按钮即a的时候只有最后一个内容即div隐藏了,其他的没有效果是为什么。
附上代码:
window.onload=function(){
var list=getByClass("menu")[0];
var lis=list.childNodes;
var a,div,li,obj;
for(var i=0;i<lis.length;i++){
if(lis[i].tagName=="LI"){
a=firstChild(lis[i]);
div=next(a);
obj={
btn:a,
item:div
};
a.relatedItem=obj;
div.relatedItem=obj;
a.onmouseover=function(){
this.relatedItem.item.style.display="block";
};
div.onmouseout=function(){
this.style.display="none";
};
a.onmouseout=function(evt){
if(evt.relatedTarget==this.relatedItem.item){
return;
};
this.relatedItem.item.style.display="none";
};
};
};
a.onclick=function(){
this.relatedItem.item.style.display="none";
};
};
其中firstChild、next两个函数是指第一个子节点和下一个子节点,都可正常访问。
问题是a.onclick=function(){
this.relatedItem.item.style.display="none";
};
只能是最后一个列表点击是隐藏,前两个无法隐藏。
html结构如下:
<ul class="menu">
<li>
<a href="###">按钮A</a>
<div>内容A</div>
</li>
<li>
<a href="###">按钮B</a>
<div>内容B</div>
</li>
<li>
<a href="###">按钮C</a>
<div>内容C</div>
</li>
</ul>
当点击按钮即a的时候只有最后一个内容即div隐藏了,其他的没有效果是为什么。
附上代码:
window.onload=function(){
var list=getByClass("menu")[0];
var lis=list.childNodes;
var a,div,li,obj;
for(var i=0;i<lis.length;i++){
if(lis[i].tagName=="LI"){
a=firstChild(lis[i]);
div=next(a);
obj={
btn:a,
item:div
};
a.relatedItem=obj;
div.relatedItem=obj;
a.onmouseover=function(){
this.relatedItem.item.style.display="block";
};
div.onmouseout=function(){
this.style.display="none";
};
a.onmouseout=function(evt){
if(evt.relatedTarget==this.relatedItem.item){
return;
};
this.relatedItem.item.style.display="none";
};
};
};
a.onclick=function(){
this.relatedItem.item.style.display="none";
};
};
其中firstChild、next两个函数是指第一个子节点和下一个子节点,都可正常访问。
问题是a.onclick=function(){
this.relatedItem.item.style.display="none";
};
只能是最后一个列表点击是隐藏,前两个无法隐藏。
html结构如下:
<ul class="menu">
<li>
<a href="###">按钮A</a>
<div>内容A</div>
</li>
<li>
<a href="###">按钮B</a>
<div>内容B</div>
</li>
<li>
<a href="###">按钮C</a>
<div>内容C</div>
</li>
</ul>
解决方案 »
- js给SPAN内元素赋值问题
- 在函数中使用全局变量的问题
- 这个函数该如何理解?谢谢
- 想收集一些HTML表情
- 为什么这个网页就不能好好地呆在iframe中
- 一个window.showModalDialog的问题!!!!!!!!1
- 关于下拉框select的简单问题,请进来看一下。
- 请看一面代码.想改成只显示一个层.然后从右向左飞.飞在屏幕的中间.速度试中.飞一次就行了.速度试中就行?
- 为何我做的主页(内有一个flash标题),多数人浏览没有问题,而有20%的人浏览很慢?
- IE9,IE10下JS问题。
- 怎么使用JavaScript或者Jquery,给父窗口的一个input或者span绑定一个onclick事件?
- jquery中的疑问?
<ul class="menu">
<li>
<a href="###" onclick="a_click(event);">按钮A</a>
<div>内容A</div>
</li>
<li>
<a href="###" onclick="a_click(event);">按钮B</a>
<div>内容B</div>
</li>
<li>
<a href="###" onclick="a_click(event);">按钮C</a>
<div>内容C</div>
</li>
</ul>
<script>function a_click(event){
var obj = event.srcElement ? event.srcElement : event.target;
obj.style.display="none";
}
</script>
这个试试
<ul id="menu">
<li>
<a href="javascript:void(0)">按钮A</a>
<div>内容A</div>
</li>
<li>
<a href="javascript:void(0)">按钮B</a>
<div>内容B</div>
</li>
<li>
<a href="javascript:void(0)">按钮C</a>
<div>内容C</div>
</li>
</ul>
<script type="text/javascript">
var ul=document.getElementById("menu");
var li=ul.getElementsByTagName("li");
var div=ul.getElementsByTagName("div");
var a=ul.getElementsByTagName("a");
for(var i=0;i<li.length;i++){
if(i>0)div[i].style.display="none";
a[i].onclick=(function(x){
return function(){
for(var n=0;n<li.length;n++){
div[n].style.display="none";
}
div[x].style.display="block";
}
})(i)
}
</script>