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 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
May 30 Javascript
js replace替换所有匹配的字符串
Feb 13 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
js添加绑定事件的方法
May 15 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
JS实现移动端按首字母检索城市列表附源码下载
Jul 05 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
原生js实现滑块区间组件
Jan 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中常用字符串处理代码片段整理
2011/11/07 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
PHP守护进程实例
2015/03/06 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
浅谈React高阶组件
2018/03/28 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
JS实现多功能计算器
2020/10/28 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python面试题小结附答案实例代码
2019/04/11 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
鱼油专家:Omegavia
2016/10/10 全球购物
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
共产党员公开承诺书
2014/03/25 职场文书
西安导游词
2015/02/12 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
感恩教育观后感
2015/06/17 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python