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 相关文章推荐
JS启动应用程序的一个简单例子
May 11 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
Feb 28 Javascript
jquery设置按钮停顿3秒不可用
Mar 07 Javascript
在JS中解析HTML字符串示例代码
Apr 16 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
May 13 Javascript
动态的9*9乘法表效果的实现代码
May 16 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
jQuery返回定位插件详解
May 15 jQuery
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
Aug 30 Javascript
vue脚手架搭建过程图解
Jun 06 Javascript
vue中div禁止点击事件的实现
Apr 02 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
php 404错误页面实现代码
2009/06/22 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP的5个安全措施小结
2012/07/17 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
理解JS事件循环
2016/01/07 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
2014年关于两会精神的心得体会
2014/03/17 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
国家助学金受助感言
2015/08/01 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
MySQL创建表操作命令分享
2022/03/25 MySQL