zoukankan      html  css  js  c++  java
  • IE及FF下获取及设置样式值

    废话少说,直接上Code,对IE与FF下的差异,均在代码中有相关的注解:

      

    代码
    <!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>
      
    <title> Test by McJeremy&Xu </title>
      
    <meta name="generator" content="editplus" />
      
    <meta name="author" content="" />
      
    <meta name="keywords" content="" />
      
    <meta name="description" content="" />
      
    <style type="text/css">
       #div2
       
    {
         width
    :200px;
         height
    :100px;
         margin-left
    :120px;
         border
    :1px dashed blue;
       
    }
       .testClassName
       
    {
         background
    :red;
       
    }
      
    </style>
     
    </head>

     
    <body>
        
    <div id="div" style="100px;height:100px;border:1px solid red;float:left;">Div 1</div>
        
        
    <div id="div2" >Div 2</div>

        
    <div id="testContent"></div>
        
    <button id="btnGetClick">获取值</button>
        
    <button id="btnUpdateClick">设置值</button>


        
    <script type="text/javascript">
        
    //<![CDATA[
          function $(obj)
          {
            
    return document.getElementById(obj);
          }
          
    function getStyle(obj,styleName)
          {        
            
    if(obj.currentStyle) //for ies
            {
              
    return obj.currentStyle[styleName]; //注意获取方式
            }
            
    else //for others
            {
               
    return document.defaultView.getComputedStyle(obj,null).getPropertyValue(styleName);
               
    //return document.defaultView.getComputedStyle(obj,null)[styleName];
            }
          }
          $(
    'btnGetClick').onclick=function()
          {
              
    //直接写在tag上的为内嵌样式、写在head-style里的为内部样式、link引入的为外部样式
              //内嵌样式,可以通过Dom.style.样式名称获取,需要注意的是样式名称是驼峰格式
              //内部样式和外部样式通过style.样式名称是无法获取到的,需要通过currentStyle || getComputedStyle来获取
              //其实,这很好理解,内嵌样式的时候,tag具有style属性(该属性值返回的是object对象),那我们就可以通过style.样式名称来获取
              //而内部或外部时,虽有style属性,但相应的值为空,所以就只有通过currentStyle || getComputedStyle来获取
              //alert($('div2').style); 可以看到,弹出的结果为object,说明style是存在的,只是其下的相应样式设置为空而已。
              
              $(
    'testContent').innerHTML='';
              
    var str=$('div').style.styleFloat || $('div').style.cssFloat;  //因为float是保留词,因此,不能再 style.float,而用ies:styleFloat , ff:cssFloat
              str=str+($('div').style.width+'<br />');
              str
    =str+($('div2').style.width+' <br />'); //这一段无法获取到内部样式,显示空值,但并不是说style不存在
              str=str+($('div2').width+' <br />'); //返回undefined,因为没有为div2的dom设置width属性
              str=str+getStyle($('div2'),'width');          //div2的样式是通过内部样式提供,因此通过currentStyle || getComputedStyle来获取
              $('testContent').innerHTML=str;
          }
          $(
    'btnUpdateClick').onclick=function()
          {
             
    //设置样式时,不管是内嵌、内部还是外部,反正这3种方式,都可以获取到style属性(对象)
             //那就可以通过它为元素设置样式,设置样式的办法有以下3种
             $('div').style.width='200px';
             $(
    'div2').style.width='100px';        
             $(
    'div').style.cssText='background:blue;color:red;font-weight:bold;'//将覆盖原来的定义,相当于定义 style="background:blue;font-size:red;font-weight:bold;"
             $('div2').className='testClassName'//相当于设置 <div class="testClassName" />
          }
        
    //]]>
        </script>
     
    </body>
    </html>
    <h3>
       心静似高山流水不动,心清若巫峰雾气不沾。
    </h3>
  • 相关阅读:
    JQuery 图片轮播
    js版的虚线框
    折叠菜单,选择下拉(手风琴)
    logstash的index值可以为中文
    假如正则从来没来过,我们该如何去匹配一个字符串?
    深度解析javascript中的浅复制和深复制
    笔试题
    前端笔试题总结---持续更新
    清除浮动
    一步一步的理解闭包
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1692214.html
Copyright © 2011-2022 走看看