JS非行间样式获取函数的实例代码


Posted in Javascript onJune 05, 2018

行间样式:元素内部用style定义的样式,如:<div style="width:200px;"></div>

非行间样式:在<style></style>内通过css定义的样式

先看一段出问题的代码

<!DOCTYPE html> 
<html> 
  <head> 
    <meta charset="UTF-8"> 
    <title></title> 
  </head> 
  <style> 
    div{ 
      height: 100px; 
      width: 100px; 
      border: 2px solid black; 
      background: red; 
    } 
  </style> 
  <body> 
    <div id="div1" style=""> 
      宽 
    </div> 
  </body> 
  <script type="text/javascript" > 
    window.onload =function(){ 
      var oDiv1=document.getElementById('div1'); 
      oDiv1.onclick=function(){ 
        oDiv1.style.width=200+'px'; 
      } 
    } 
  </script> 
</html>

我在页面放了一个方块,红底黑边,想通过点击该方块让他的宽度变为200px,看一下结果——没有任何反应,也没有报错。

在事件中添加alert('a');有反应,说明onclick事件被触发了,那么就是

oDiv1.style.Width=200+'px';

这行代码有问题。

打印一下这个这个变量:

alert(oDiv1.style.Width);

虽然不报错,但是显示空白,即使用变量赋值之后任然无法获取这个值,真正的原因是style只能获取行间样式,试一下:

<!DOCTYPE html> 
<html> 
  <head> 
    <meta charset="UTF-8"> 
    <title></title> 
  </head> 
  <style> 
     
  </style> 
  <body> 
    <div id="div1" style="height: 100px; 
      width: 100px; 
      border: 2px solid black; 
      background: red;"> 
      宽 
    </div> 
  </body> 
  <script type="text/javascript" > 
    window.onload =function(){ 
      var oDiv1=document.getElementById('div1'); 
      oDiv1.onclick=function(){ 
        oDiv1.style.width=200+'px'; 
      } 
    } 
  </script> 
</html>

可以确定确实是行间样式与非行间样式的问题,实际上不可能把所有样式都写在行间。

要解决这个问题,需要引入两个元素属性——currentStyle和getComputedStyle(obj, false)

currentStyle——获取非行间(当前样式)IE浏览器专属,chrome和FF不兼容。

getComputedStyle(obj, false)——获取非行间(计算后的样式)IE不兼容。

<script type="text/javascript" > 
  window.onload =function(){ 
    var oDiv1=document.getElementById('div1'); 
    oDiv1.onclick=function(){ 
            //FF、chrome 
            alert(getComputedStyle(oDiv1, false).width); 
            //IE 
            alert(oDiv1.currentStyle.width); 
    } 
  } 
</script>

把他封装一下写成一个公用函数:

//obj:哪个元素 
//attr:那个样式 
function getStyle(obj,attr){ 
  if(obj.currentStyle){ 
    //IE 
    return obj.currentStyel[attr]; 
  }else{ 
    //FF 
    return getComputedStyle(obj, false)[attr]; 
  } 
}

通过判断obj.currentStyle是否为真来判断当前浏览器为IE还是其他。

注意:.width的写法可以写成['width']

总结

以上所述是小编给大家介绍的JS非行间样式获取函数的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
对YUI扩展的Gird组件 Part-2
Mar 10 Javascript
Firebug 字幕文件JSON地址获取代码
Oct 28 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
Feb 10 Javascript
解释&amp;&amp;和||在javascript中的另类用法
Jul 28 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 Javascript
Node.js返回JSONP详解
May 18 Javascript
React-router中结合webpack实现按需加载实例
May 25 Javascript
详解webpack + vue + node 打造单页面(入门篇)
Sep 23 Javascript
vue 挂载路由到头部导航的方法
Nov 13 Javascript
angularjs http与后台交互的实现示例
Dec 21 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 #Javascript
Node错误处理笔记之挖坑系列教程
Jun 05 #Javascript
Vue项目中跨域问题解决方案
Jun 05 #Javascript
Vue多系统切换实现方案
Jun 05 #Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 #jQuery
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 #Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 #Javascript
You might like
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
英语简历自我评价
2014/01/26 职场文书
信息技术课后反思
2014/04/27 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL