• 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';
    }
  • 相关阅读:
    网站服务架构
    10年工作经验老程序员推荐的7个开发类工具
    极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒
    SQL SERVER发布与订阅
    C#开发可以可视化操作的windows服务
    highcharts图表中级入门:非histock图表的highcharts图表如何让图表产生滚动条
    MS Chart Control 學習手記(二)
    MsChart,饼状图
    c#中如何退出程序后自动重新启动程序
    2016 系统设计第一期 (档案一)MVC 控制器接收表单数据
  • 原文地址:https://www.cnblogs.com/zhangfengyang/p/4682165.html
Copyright © 2020-2023  润新知