js学习笔记83——获取元素的样式

js学习笔记83——获取元素的样式

上一节学习到,通过style获取的样式为内联样式,那如何获取样式表中的样式?

currentStyle

读取当前元素正在显示的样式
语法:元素.currentStyle.样式名
注意:这个只在ie中支持,其他浏览器不支持。

getComputedStyle()

这个和上一个的区别是,它是一个window方法,可直接使用。
注意:ie9以下不支持。
需要两个参数:
1、要获取样式的元素
2、传递一个伪元素。一般传null。
返回值为一个对象,对象中封装了当前元素对应的样式。

			var btn02 = document.getElementById("btn02");
			btn02.onclick = function(){
				alert(getComputedStyle(box1,null).height);
			};

在这里插入图片描述
如果把width设置为100%。

		#box1{
			width: 100%;
			height: 100px;
			background-color: red;
		}

然后获取width

			var btn02 = document.getElementById("btn02");
			btn02.onclick = function(){
				alert(getComputedStyle(box1,null).width);
			};

在这里插入图片描述
可以看到获取的是真实值。

只读

currentStyle和getComputedStyle()获取的样式都是只读的,不能改。

如何兼容ie8

前面两种方法一种是ie的,一直是ie8以上和其他浏览器的。如何兼容两种浏览器呢?

先看一段代码

			var btn02 = document.getElementById("btn02");
			btn02.onclick = function(){
				alert(getComputedStyle);
			};

edge结果:
在这里插入图片描述
ie8结果:
在这里插入图片描述
所以,如果浏览器没有这个方法,则会报错。
用if语句来实现兼容。

			var btn02 = document.getElementById("btn02");
			btn02.onclick = function(){
				getStyle(box1,"width")
			};
		};
		// obj:元素
		// name:样式名
		function getStyle(obj,name){
			if(window.getComputedStyle){
				return getComputedStyle(obj,null)[name];
			}else{
				return obj.currentStyle[name];
			}
		}

edge:

在这里插入图片描述
ie8:

在这里插入图片描述
这里if语句中的window不能去掉。
有window,则是一个属性,如果这个属性没有,则返回值为undefined。
没有window,则是一个变量,如果这个变量没有,则会报错。

基于这一点,可以把window换成obj。

这段代码还可以用三元运算符改进。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小欣CZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值