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代码
Mar 07 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
Mar 18 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
浏览器兼容的JS写法总结
Apr 27 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
JS图片放大效果简单实现代码
Sep 08 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
Bootstrap fileinput文件上传预览插件使用详解
May 16 Javascript
Angular中使用better-scroll插件的方法
Mar 27 Javascript
微信小程序云开发之模拟后台增删改查
May 16 Javascript
微信小程序实现底部弹出框
Nov 18 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
js 居中漂浮广告
2010/03/21 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
学python最电脑配置有要求么
2020/07/05 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
幼儿园庆六一游园活动方案
2014/01/29 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
节能减耗标语
2014/06/21 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
白银帝国观后感
2015/06/17 职场文书
亲戚关系证明
2015/06/24 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
九年级数学教学反思
2016/02/17 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL