檢索DOM 元素的顯示屬性
該文件概述了一個HTML 結構,其中包含兩個具有不同顯示屬性的元素和一個互動的JavaScript 腳本和他們在一起。該腳本嘗試檢索每個元素的顯示屬性,但遇到意外結果。使用 JavaScript 的 .style.* 屬性顯示值時,它會觀察到空字串,而不是預期的「none」和「block」值。這導致查詢正確的方法來準確檢索顯示屬性。
關鍵的見解在於理解樣式屬性和應用的樣式之間的差異。 JavaScript 中的 .style.* 屬性直接對應到 style 屬性,這是 HTML 元素的內聯樣式中存在的動態屬性。然而,顯示的樣式或應用的樣式往往受到CSS規則、繼承和使用者偏好等因素的影響。若要擷取已套用的樣式,必須使用 getComputedStyle() 方法。
例如,如果要應用以下CSS 規則:
<code class="css">a { display: inline; }</code>
.style.display 屬性錨元素仍然會傳回「none」(內聯值),即使該元素由於CSS 規則而顯示為內聯。這是因為 .style.* 屬性只反映內嵌樣式屬性,而不反映套用的樣式。
要檢索應用的樣式,必須使用 getCompulatedStyle() 方法,因為它提供對所有計算的和級聯樣式,包括由使用者首選項和瀏覽器樣式引擎定義的樣式。以下是一個範例:
<code class="javascript">var a = (document.getElementById('a')); var display = window.getComputedStyle(a).display; alert(display); // Will output "inline"</code>
作為最佳實踐,建議透過切換 .className 將表示與邏輯分開,而不是直接修改樣式屬性。這種方法促進了模組化、可維護性和程式碼可重用性。
以上是如何在 JavaScript 中準確檢索 DOM 元素的顯示屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!