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 相关文章推荐
Javascript valueOf 使用方法
Dec 28 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
浅谈 javascript 事件处理
Jan 04 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 jQuery
JS实现点击按钮可实现编辑功能
Jul 03 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
Jul 30 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
vue实现点击追加选中样式效果
Nov 01 Javascript
vue实现分页的三种效果
Jun 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上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
python的urllib模块显示下载进度示例
2014/01/17 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
上课看小说检讨书
2014/02/22 职场文书
高中语文课后反思
2014/04/27 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
保外就医申请书范文
2015/08/06 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android
Python max函数中key的用法及原理解析
2021/06/26 Python
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
MySQL普通表如何转换成分区表
2022/05/30 MySQL