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 相关文章推荐
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
jquery validate demo 基础
Oct 29 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
微信小程序对接七牛云存储的方法
Jul 30 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
ES6解构赋值的功能与用途实例分析
Oct 31 Javascript
Vue组件通信的四种方式汇总
Feb 08 Javascript
Vue实现根据hash高亮选项卡
May 27 Javascript
原生js实现购物车功能
Sep 23 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中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
javascript Window及document对象详细整理
2011/01/12 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
js实现每日签到功能
2018/11/29 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
Vue事件处理原理及过程详解
2020/03/11 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
python的sys.path模块路径添加方式
2020/03/09 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
单位介绍信范文
2014/01/18 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
自荐信范文
2019/05/20 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS