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 相关文章推荐
JavaScript 10件让人费解的事情
Feb 15 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
javascript禁用Tab键脚本实例
Nov 22 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
jquery中ready()函数执行的时机和window的load事件比较
Jun 22 Javascript
IE下JS保存图片的简单实例
Jul 15 Javascript
用js实现博客打赏功能
Oct 24 Javascript
vuejs使用递归组件实现树形目录的方法
Sep 30 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
openlayers实现地图测距测面
Sep 25 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 Javascript
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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
python批量下载抖音视频
2019/06/17 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
诚信考试标语
2014/06/24 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android