2017-02-21 90 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

相關問題