2017-02-21 74 views
2

在显示具有命名空间元素的XHTML文档的浏览器中,如何使用JavaScript访问HTML命名空间之外元素的.style属性?如何在XHTML中访问名称空间元素上的.style

document.getElementsByTagNameNS(namespace, tagName)返回对象集合,但对象没有CSSStyleDeclaration样式属性(至少在Chrome或Firefox中不存在)。

你可以说这是由设计决定的,CSS是特定于HTML的。但名称空间CSS对内容的样式很好。所以风格信息就在那里。我如何读写它?

我想知道,例如,哪些元素正在渲染为块和内联。

(编辑添加例如:)

看到这一点,去www.johnmccaskey.com/style.xhtml。蓝色部分位于HTML名称空间中,http://www.tei-c.org/ns/1.0名称空间中的红色部分。 CSS风格都很好。例如,在Chrome的控制台中输入document.getElementsByTagName("box")。你会看到两个<box>对象。 HTML中的一个具有.style属性,TEI没有。

+0

'getElementsByTagNameNS'返回元素的集合,所以结果不会有任何'style'属性。如果你做'document.getElementsByTagNameNS(namespace,tagName)[0] .style'是否给你一些东西? –

+0

糟糕,我的意思是集合中的对象缺少'.style'。我编辑了这个问题。 – JPM

+0

好的。如果你可以包含一些导致这种行为的代码,它会更容易回答。 –

回答

2

.style属性反映了HTML元素上的内容属性,例如,而不是它从级联中获得的计算风格的反映。

要获取计算值,请使用window.getComputedStyle()。

要看到它的行动,这个脚本只是</body>标签

<script> 
var boxes = document.body.children; 
console.log(window.getComputedStyle(boxes[0], null).getPropertyValue("color")); 
console.log(window.getComputedStyle(boxes[1], null).getPropertyValue("color")); 
</script> 

之前添加到您的XHTML,并检查控制台输出。

告诉一个元素是否是内联或块或一些其它显示值,使用window.getComputedStyle(element, null).getPropertyValue("display")

+0

如何设置这些值? – JPM

+0

通过级联。创建或修改样式表对象。 – Alohci

+0

没什么直接的,呃? :-( – JPM

相关问题