• 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';
    }
  • 相关阅读:
    53. Maximum Subarray
    64. Minimum Path Sum
    28. Implement strStr()
    26. Remove Duplicates from Sorted Array
    21. Merge Two Sorted Lists
    14. Longest Common Prefix
    7. Reverse Integer
    412. Fizz Buzz
    linux_修改域名(centos)
    linux_redis常用数据类型操作
  • 原文地址:https://www.cnblogs.com/zhangfengyang/p/4682165.html
Copyright © 2020-2023  润新知