js获取元素样式ele.style.attribute只能获取内敛样式的属性值!内部样式的属性值获取不了!怎么解决

js获取元素样式ele.style.attribute只能获取内敛样式的属性值!内部样式的属性值获取不了!怎么解决,第1张

HTMLElementprototype__defineGetter__("currentStyle", function () { 

    return thisownerDocumentdefaultViewgetComputedStyle(this, null); 

});

获取样式的时候吧style改为currentStyle

比如elementstylewidth改为elementcurrentStylewidth

1、直接设置style对象(内联样式)

使用JavaScript设置元素样式的最简单方法是使用style属性。在我们通过JavaScript访问的每个HTML元素时都有一个 style对象。此对象允许我们指定CSS属性并设置其值。例如,这是设置id 值为demo的HTML元素的字体颜色、背景颜色、的样式:var myElement = documentquerySelector("#demo");

// 把颜色设置成紫色

elemstylecolor = 'purple';

// 将背景颜色设置为浅灰色

elemstylebackgroundColor = '#e5e5e5';

// 将高度设置为150 px

elemstyleheight = '150px';

注:JavaScript使用驼峰原则(例:backgroundColor)而不是短划线(background-color)表示属性名称

该style属性在元素上添加样式内联:

Hello, world!

但是,这可能会使我们的标记变得非常混乱。浏览器渲染的性能也较差。

2、设置style属性--添加全局样式

另一种方法是将里带有CSS属性的元素注入DOM。将在设置应用于一组元素而不仅仅是一个元素的样式时,这非常有用。

首先,我们将创建一个样式元素。var style = documentcreateElement('style');

接下来,我们将通过innerHTML来给

styleinnerHTML =

'some-element {' +

'color: purple;' +

'background-color: #e5e5e5;' +

'height: 150px;' +

'}';

最后,我们将把样式注入DOM。为此,我们将获取script我们在DOM中找到的第一个标记,并用它insertBefore()来添加我们的style标记。// 创建我们的样式表

var style = documentcreateElement('style');

styleinnerHTML =

'some-element {' +

'color: purple;' +

'background-color: #e5e5e5;' +

'height: 150px;' +

'}';

// 获取第一个脚本标记

var ref = documentquerySelector('script');

// 在第一个脚本标签之前插入新样式

refparentNodeinsertBefore(style, ref);

3、使用JavaScript添加和删除类:add()和remove()

这种方法涉及添加和删除类值,这反过来又会改变应用的样式规则。例如,假设我们有一个样式规则,如下所示:disableMenu {

display: none;

}

在HTML中,您有一个id为 dropDown的菜单:

123456

现在,如果我们想将disableMenu 样式规则应用于此元素中,我们需要做的就是将disableMenu作为类值添加到dropDown元素:

OneTwoThreeFourFiveSix

要使用JavaScript完成相同的结果,我们将使用classList API。此API使得从HTML元素添加或删除类值变得非常简单。

要将disableMenu类名添加到我们的dropDown元素,请在HTML元素的classList属性上使用add()方法:var theDropDown = documentquerySelector("#dropDown");

theDropDownclassListadd("disableMenu");

要删除disableMenu类名,我们可以调用classList API的remove()方法:var theDropDown = documentquerySelector("#dropDown");

theDropDownclassListremove("disableMenu");

CSS的样式分为三类: 

内嵌样式:是写在Tag里面的,内嵌样式只对所有的Tag有效。 

内部样式:是写在HTML的里面的,内部样式只对所在的网页有效。 

外部样式表:如果很多网页需要用到同样的样式(Styles),将样式(Styles)写在一个以css为后缀的CSS文件里,然后在每个需要用到这 些样式(Styles)的网页里引用这个CSS文件。

getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式对象([object CSSStyleDeclaration]) 

currentStyle是IE浏览器的一个属性,返回的是CSS样式对象

element指JS获取的DOM对象 

elementstyle //只能获取内嵌样式 

elementcurrentStyle //IE浏览器获取非内嵌样式 

windowgetComputedStyle(element,伪类) //非IE浏览器获取非内嵌样式 

documentdefaultViewgetComputedStyle(element,伪类)//非IE浏览器获取非内嵌样式 

注:Gecko 20 (Firefox 4 / Thunderbird 33 / SeaMonkey 21) 之前,第二个参数“伪类”是必需的(如果不是伪类,设置为null),现在可以省略这个参数。

下面的html中包含两种css样式,id为tag的div是内嵌样式,而id为test的div样式为内部样式

<!doctype html>

<html lang="en">

  <head>

    <meta charset="UTF-8">

    <meta name="Generator" content="EditPlus®">

    <meta name="Author" content="Yvette Lau">

    <meta name="Keywords" content="关键字">

    <meta name="Description" content="描述">

    <title>Document</title>

    <style>

      #test{

        width:500px;

        height:300px;

        background-color:#CCC;

        float:left;

      }

    </style>

  </head>

  <body>

    <div id = "test"></div>

    <div id = "tag" style = "width:500px; height:300px;background-color:pink;"></div>

  </body>

</html><script type = "text/javascript">

  windowonload = function(){

    var test = documentgetElementById("test");

    var tag = documentgetElementById("tag");

 

    //CSS样式对象:CSS2Properties{},CSSStyleDeclaration

    consolelog(teststyle); //火狐返回空对象CSS2Properties{},谷歌返回空对象CSSStyleDeclaration{} 

    consolelog(tagstyle); //返回CSS2Properties{width:"500px",height:"300px",background-color:"pink"}

    //elementstyle获取的是内嵌式的style,如果不是内嵌式,则是一个空对象

 

    consolelog(tagstylebackgroundColor);//pink

    consolelog(tagstyle['background-color']);//pink

    //获取类似background-color,border-radius,padding-left类似样式的两种写法啊

 

    consolelog(testcurrentStyle) //火狐和谷歌为Undefined,IE返回CSS对象

    consolelog(windowgetComputedStyle(test,null))//谷歌返回CSSStyleDeclaration{……} ,火狐返回CSS2Properties{……}

    consolelog(windowgetComputedStyle(test))

    //效果同上,但是在Gecko 20 (Firefox 4/Thunderbird 33/SeaMonkey 21) 之前,第二个参数“伪类”是必需的(如果不是伪类,设置为null)

 

    consolelog(testcurrentStylewidth);//500px(IE)

    consolelog(windowgetComputedStyle(test)width); //500px;

    consolelog(windowgetComputedStyle(test)['width']);//500px;

    //documentdefaultViewgetComputedStyle(element,null)[attr]/windowgetComputedStyle(element,null)[attr]   

  }

</script>

先获取元素style属性中的CSS样式

getComputedStyle 是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象(objectCSSStyleDeclaration) getComputedStyle 方法获取的是最终应用在元素上的所有CSS属性对象(包括默认),而elementstyle只能获取元素style属性中的CSS样式。

在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如下:

1

objstyle:这个方法只能JS只能获取写在html标签中的写在style属性中的值(style=”…”),而无法获取定义在<style

type="text/css">里面的属性。

复制代码

代码如下:

<span

style="font-family:Arial;font-size:14px;"><!DOCTYPE

html

PUBLIC

“-//W3C//DTD

XHTML

10

Transitional//EN”

“>

以上就是关于js获取元素样式ele.style.attribute只能获取内敛样式的属性值!内部样式的属性值获取不了!怎么解决全部的内容,包括:js获取元素样式ele.style.attribute只能获取内敛样式的属性值!内部样式的属性值获取不了!怎么解决、js *** 作style属性的路径问题、急!怎么用js提取出span标签内style里的属性值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10136392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存