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

代码如下:

<style> 
#div1 {width: 100px; height: 100px; border: 1px solid red;}
#p1 {height: 30px; background: green; display: none;}
<style>
<div id="div1">div1</div>
<p id="p1">p1</p>

var oDiv = document.getElementById('div1');
var oP = document.getElementById('p1');
oDiv.onclick = function(){
    if(oP.style.display=='none'){
        oP.style.display='block';
    }else{
        oP.style.display='none';
    }
}

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

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

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

function getStyle(obj,attr){
     if(obj.currentStyle){//IE
        return obj.currentStyle[attr];
     }else{//ff
        return getComputedStyle(obj,false)[attr];
     }
 }

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

 oDiv.onclick=function(){
  if(getStyle(oP,'display')==='none')
   oP.style.display='block';
  else
   oP.style.display='none';
}

转载于:https://www.cnblogs.com/zhangfengyang/p/4682165.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值