JavaScript 使用element.style.property获取元素的属性注意事项

在JavaScript中可以通过 元素.style.XXX 来获取和修改元素的属性,但是该方式 只能获取和修改行内样式 ,外部样式和内部样式是获取不到的,因此它具有较高的优先级,除非使用 !important
例子如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        #box {
            width: 200px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div style="width: 100px; height: 100px;" id="box"></div>

    <script src="js/base.js"></script>
</body>
</html>

这里我设置了 div 的颜色为绿色
通过JavaScript打印输出

function getStyle(obj, name) {
    if (window.getComputedStyle) {
        return getComputedStyle(obj, null)[name];
    } else {
        return obj.currentStyle[name];
    }
}

var box = document.getElementById("box");
console.log(getStyle(box, "width"));
console.log(getStyle(box, "height"));
console.log(getStyle(box, "background-color"));
console.log(box.style.backgroundColor);

谷歌浏览器打开,查看控制台,发现打印为空
在这里插入图片描述
解决办法就是使用 window 自带的 getComputedStyle() 拿到获取属性,但是该方法只能读,不能修改,而且该函数必须使用IE8以上的浏览器。

另一种方式是通过JavaScript来添加或移除CSS类:

// 添加一个新的类
document.getElementById("myElement").classList.add('newClass');

// 移除一个已有的类
document.getElementById("myElement").classList.remove('existingClass');

总结

  • element.style.property 只能获取行内样式和修改行内样式
  • 要想获取外部样式或者 style 标签的样式,可以使用 getComputedStyle() ,但是该方法只读,且存在兼容性问题,下面提供一个封装的函数解决兼容性问题
  • 可以使用 classList 来修改样式
// 解决兼容性函数
function getStyle(obj, name) {
    if (window.getComputedStyle) {
    	// 正常浏览器
        return getComputedStyle(obj, null)[name];
    } else {
    	// IE8以下浏览器
        return obj.currentStyle[name];
    }
}

封面图

在这里插入图片描述

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
答案是 A、element.property 或 C、element.getAttribute()。JavaScript 提供了多种方式来获取元素节点的属性值,常用的有两种方式: 1. 使用元素节点的属性获取属性值 在 JavaScript 中,可以通过元素节点的属性获取属性值。例如,可以通过 `value` 属性获取输入框的值,通过 `src` 属性获取图片的 URL 等。以下代码演示了如何使用 `value` 属性获取输入框的值: ```html <input type="text" id="myInput"> <script> var input = document.getElementById('myInput'); var value = input.value; console.log(value); </script> ``` 在代码中,`input.value` 表示获取输入框的值,将其赋值给 `value` 变量,并使用 `console.log()` 方法输出该值。 2. 使用元素节点的 `getAttribute()` 方法来获取属性值 除了使用元素节点的属性获取属性值外,还可以使用元素节点的 `getAttribute()` 方法来获取属性值。`getAttribute()` 方法需要传入一个属性名作为参数,可以获取属性的值。以下代码演示了如何使用 `getAttribute()` 方法获取元素节点的 `data-` 属性值: ```html <div id="myDiv" data-color="red"></div> <script> var div = document.getElementById('myDiv'); var color = div.getAttribute('data-color'); console.log(color); </script> ``` 在代码中,`div.getAttribute('data-color')` 表示获取 `myDiv` 元素的 `data-color` 属性值,将其赋值给 `color` 变量,并使用 `console.log()` 方法输出该值。 `element.setAttribute()` 方法用于设置元素节点的属性值,与获取属性值无关。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值