zoukankan      html  css  js  c++  java
  • onclick控制元素显示与隐藏时,点击第一次无反应的原因

    代码如下:

    <style> 
    #div1 { 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';
    }
  • 相关阅读:
    只要三步,使用html5+js实现像素风头像生成器
    按Ctrl+Enter发送的实现
    “放到桌面”的Servlet实现
    从tom大叔那想着拿书的,呵呵。
    也写dateUtil.js
    智习室
    零基础爬虫课,不会编程也能做爬虫
    1小时教你学会如何采集微博数据:0基础小白也能轻松学会!
    TransactionScope 分布式事务配置
    centos7创建共享文件夹
  • 原文地址:https://www.cnblogs.com/zhangfengyang/p/4682165.html
Copyright © 2011-2022 走看看