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 no-repeat写法 背景不重复
Mar 18 Javascript
javascript中的继承实例代码
Apr 27 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
JavaScript中的继承方式详解
Feb 11 Javascript
javascript常见数据验证插件大全
Aug 03 Javascript
JavaScript的this关键字的理解
Jun 18 Javascript
javascript学习之json入门
Dec 22 Javascript
关于不同页面之间实现参数传递的几种方式讨论
Feb 13 Javascript
es6的数字处理的方法(5个)
Mar 16 Javascript
JavaScript创建、读取和删除cookie
Sep 03 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 31 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 其他游戏
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
Yii配置文件用法详解
2014/12/04 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
图片完美缩放
2006/09/07 Javascript
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
js实现网页随机验证码
2020/10/19 Javascript
Python新手实现2048小游戏
2015/03/31 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
python:接口间数据传递与调用方法
2018/12/17 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
python分布式计算dispy的使用详解
2019/12/22 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
高级销售求职信
2014/02/21 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript