onclick控制元素显示与隐藏时,点击第一次无反应的原因

代码如下:

 1 for(i=0;i<this.aDiv.length;i++){
 2                             this.aDiv[i].index=i;
 3                             this.aDiv[i].oUl=this.aDiv[i].getElementsByTagName(‘ul‘)[0];
 4                             this.aDiv[i].oUl.aA=this.aDiv[i].oUl.getElementsByTagName(‘a‘);
 5                             this.aDiv[i].onmousedown=function(){
 6                                 if(this.oUl.display===‘none‘)
 7                                     this.oUl.style.display=‘block‘;
 8                                 else
 9                                     this.oUl.style.display=‘none‘;
10                             }
11                         }

上面的代码要实现的效果是,党我点击DIV的时候,如果ul是隐藏的,那么显示出来,否则,就隐藏.但是当我点击第一次的时候,它总是没有反应,必须我点击第二次的时候,才能正常工作.

这是因为当我第一次点击的时候,虽然ul在CSS设置里是display:none;但是用if(this.oul.display===‘none‘)并无法获取到display的属性值.只有当我们把display:‘none‘;写在行间样式的时候,才会被识别.

解决办法就是用一个JS函数,去获取计算过后的样式,也就是确切的属性

1 2//obj是要查询的元素,attr是要查询的属性3function getStyle(obj,attr){
2     if(obj.currentStyle){//IE
3         return obj.currentStyle[attr];
4     }else{//ff
5         return getComputedStyle(obj,false)[attr];
6     }
7 }

这样上面的效果代码应该改为:

1 this.aDiv[i].onmousedown=function(){
2      if(getStyle(this.oUl,‘display‘)===‘none‘)
3           this.oUl.style.display=‘block‘;
4      else
5           this.oUl.style.display=‘none‘;
6}
时间: 2024-10-10 22:02:21

onclick控制元素显示与隐藏时,点击第一次无反应的原因的相关文章

css控制元素显示和隐藏

有dom结构 visibility: visible; //显示 visibility: hidden; //隐藏 没dom结构 display: block; //显示 display: none; //隐藏 原文地址:https://www.cnblogs.com/Hajar/p/11088496.html

HTML元素显示与隐藏

在WEB开发中,前台HTML中经常需要控制元素的隐藏与显示,我们最为最常见是二级导航栏(通过鼠标的移动来触发onmouseover,onmouseout事件来实现二级菜单的显示与隐藏)二级菜单的显示与隐藏. 然而控制元素的影响与显示有两种方式: 1.display : 设置如何及是否显示某元素 2.visibility : 设置元素可见或不可见 Example: <html> <head> <title>HTML元素的显示与隐藏控制</title> <

AngularJS入门(用ng-hide指令实现元素显示和隐藏)

控制html元素显示和隐藏有n种方法:html的hidden.css的display.jquery的hide()和show().bootstrap的.hide.今天的重点不是显示和隐藏,而是监听某个布尔变量值,自动改变元素显示和隐藏状态.监听函数.if判断.选择dom.设置dom,5行代码搞不定吧,而且毫无技术含量. 看代码: <!DOCTYPE html> <html ng-app> <head> <meta charset="utf-8"&

jquery中使元素显示和隐藏方法之间的区别

在实际的项目开发中,要使一个元素隐藏的方法有很多,比如css的多种属性和jquery的多种方法,虽然他们的作用都是使元素不可见,但是各个方法实现的原理是不一样的.下面主要介绍jquery各个元素隐藏方法之间的区别. 1.show()和hide() 使用hide()方法隐藏元素实际上是同时减少元素的高度.宽度以及不透明度,直到这三个属性为0,最后设置元素的css属性disolay:none.show()方法从上到下增大元素的高度,从左到右增大元素的宽度,同时增加内容的不透明度,直至元素完全显示.

js控制tr显示和隐藏

很久没有写代码,最近新接了一个项目,开始记录自己开发过程中遇到的一些问题. 关于js控制tr的显示与隐藏 最开始写法是: <tr id="att" style="display:none;"> <td style="text-align:right;">附件文件:</td> <td> <div id="div_fujian"> <div class="

JQuery 控制元素显示隐藏

JS在浏览器里面做调试的时候,先在浏览器里面找到页面代码加上断点来执行.然后根据执行情况来查找部分变量是否能找到,一点一点的排查内容.可以做筛选条件 部分隐藏.默认让部分条件加上.hide 默认隐藏,然后通过点击 更多类目 来切换 隐藏与显示 <style>.hide{display:none;}<style> <div class="seach-guide"> <div class="item clearfix">3

安卓(Android )软键盘的控制(显示和隐藏)

Activity 启动时软键盘默认状态 在清单文件(manifest .xml)中可以通过在 Activity 标签中增加属性控制软键盘的默认状态: android:windowSoftInputMode="stateHidden" 上面的 stateHidden 就是表示隐藏,同理 stateVisible 就是代表可见. 使用 EditView 的方法来控制软键盘的显示 EditView 提供了一个方法来控制当焦点在该 EditView 上时,软键盘是否显示.(API 21 以上)

js控制div显示与隐藏

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

jquery点击区域显示或隐藏DIV,点击非该DIV的地方隐藏该DIV

<div class="Content_top"> <div class="Reserve"> <h3><span class="current">散租自驾</span><span>商务代驾</span><span> </span><span> </span><span> </span><