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 相关文章推荐
Firefox div高度自适应
Apr 28 Javascript
常用的JS验证和函数汇总
Dec 23 Javascript
js实现鼠标经过表格行变色的方法
May 12 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
Bootstrap 实现查询的完美方法
Oct 26 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
Jul 28 Javascript
详解React中的组件通信问题
Jul 31 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
Aug 28 Javascript
解决Linux无法正常安装与卸载Node.js的方法
Jan 19 Javascript
使用 vue-i18n 切换中英文效果
May 23 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
Vue+element+cookie记住密码功能的简单实现方法
Sep 20 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
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
PHP关联链接常用代码
2012/11/05 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python语言快速上手学习方法
2018/12/14 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
wxPython实现列表增删改查功能
2019/11/19 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
本科生学习总结的自我评价
2013/10/02 职场文书
租房协议书
2014/04/10 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Python实现简繁体转换
2021/06/07 Python
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
vue中data里面的数据相互使用方式
2022/06/05 Vue.js
Python+DeOldify实现老照片上色功能
2022/06/21 Python