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 相关文章推荐
iframe 自适应高度[在IE6 IE7 FF下测试通过]
Apr 13 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
Dec 12 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
Javascript基础教程之break和continue语句
Jan 18 Javascript
cookie的secure属性详解
Apr 08 Javascript
详解webpack的配置文件entry与output
Aug 21 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
vue实现个人信息查看和密码修改功能
May 06 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 Javascript
关于vue属性使用和不使用冒号的区别说明
Oct 22 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python 中的 else详解
2016/04/23 Python
python 调用c语言函数的方法
2017/09/29 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
python十进制转二进制的详解
2020/02/07 Python
python实现简单井字棋游戏
2020/03/04 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python如何导入依赖包
2020/07/13 Python
2014道德模范事迹材料
2014/02/16 职场文书
售后服务承诺书范文
2014/03/26 职场文书
工业设计专业自荐书
2014/06/05 职场文书
党员争先创优承诺书
2015/01/20 职场文书
学生会工作感言
2015/08/07 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS