用JS获取不到元素样式信息的"Bug"?
2016-08-09 15:15
561 查看
这是Bug吗?
相信很多人学习前端的时候都会有遇到一个问题,在JS中需要获取某个元素的宽高或者是绝对定位的位置信息,通常我们会这么写:var elemWidth = elem.style.width; console.log(elemWidth); //(空字符串)
然而我们会发现什么也没获取到,这到底是个什么原因?
我们仔细观察一下我们是怎么获取这些信息的。通过元素的 style 属性,获取一个关于元素样式信息的对象,在里面取我们需要的样式信息。而我们是不是理所当然的认为我们写在 style 标签内的样式,或者通过 link 引入的样式表的样式信息都存在了元素的 style 这个属性中?
很遗憾,并不是这样,我们再想想我们什么时候对元素的 style 属性进行了修改。相信大家都写过内联样式,例如:
<div class="exp" style="width: 100px;">举个栗子</div>
这时候我们再来获取下元素的宽:
var elemWidth = document.querySelector(".exp").style.width; console.log(elemWidth); //100px
相信看到这你们也知道是怎么回事了,只有在内联样式中定义的样式才能在JS中通过元素的 style 属性取得。
解决方式
这里列举我所知道的解决方式供大家参考:1. 很明显,将需要获取的样式写在元素中,即使用内联样式的方式;
2. 在JS中要使用之前,先使用 elem.style.width=”100px”; 这样的方式初始化需要使用的样式,在后面也可以获取到其值;
3. 一些位置信息可以通过元素的 offsetXxx 属性来获取。
相关文章推荐
- js 获取元素的具体样式信息getcss(实例讲解)
- js获取元素样式的具体信息
- 原生js获取元素的样式信息
- JS 获取元素当前的样式信息
- JS获取对象指定属性在样式中的信息
- js获取元素样式方法
- 原生js获取元素样式
- JS获取元素属性、样式getComputedStyle()和currentStyle方法兼容性问题
- JS获取和修改元素样式
- js正确获取元素样式详解
- 关于 隐藏元素(样式为 display: none 的元素)及其子元素 获取不到高度的问题
- js获取元素外链样式的方法
- 获取元素样式信息于三中获取方式的区别
- document.getElementById("idName")用js方法获取元素,则设定风格属性的方法为
- js 获取input type="file" 选择的文件大小、文件名称、上次修改时间、类型等信息
- js获取元素的外链样式
- js正确获取元素样式详解
- firefox下JS动态创建的form表单元素获取不到值的问题
- js获取元素样式方法
- JS 获取元素的属性值,非内联样式