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 相关文章推荐
ExtJS Window 最小化的一种方法
Nov 18 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
Oct 23 Javascript
纯javascript代码实现计算器功能(三种方法)
Sep 07 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
js面向对象编程总结
Feb 16 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript获取URL参数的方法之一
Mar 24 Javascript
js实现简单数字变动效果
Nov 06 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
浅谈TypeScript的类型保护机制
Feb 23 Javascript
JavaScript数组reduce()方法的语法与实例解析
Jul 07 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
Python实现简单过滤文本段的方法
2017/05/24 Python
django-filter和普通查询的例子
2019/08/12 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
PHP统计代码行数的小代码
2019/09/19 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
社区禁毒工作方案
2014/06/02 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书