首頁  >  文章  >  web前端  >  如何使用 JavaScript 透過 ID 取得應用於 HTML 元素的所有樣式屬性及其值?

如何使用 JavaScript 透過 ID 取得應用於 HTML 元素的所有樣式屬性及其值?

Patricia Arquette
Patricia Arquette原創
2024-10-28 20:44:30280瀏覽

How can I get all the style attributes and their values applied to an HTML element by its ID using JavaScript?

在JavaScript 中透過ID 取得元素的樣式屬性

簡介

需要檢索所有樣式屬性及其僅使用簡介

需要檢索所有樣式屬性及其僅使用簡介

需要檢索所有樣式屬性及其僅使用簡介

需要檢索所有樣式屬性及其僅使用簡介

需要檢索所有樣式屬性及其僅使用HTML 元素的ID 來套用值?這個問題深入探討如何做到這一點。

  • 理解問題
  • 目標是建立一個函數 getStyleById,它取得元素的 ID並傳回所有樣式屬性及其對應值的清單。此函數應考慮外部 CSS 檔案中定義的內聯屬性和樣式屬性。
  • 制定解決方案
  • 要實現此目的,請考慮以下方法:

循環CSSStyleDeclaration 對象(getCompulatedStyle): 迭代CSSStyleDeclaration 物件的索引,使用getPropertyValue 取得每個屬性名稱的值。

<code class="javascript">function getStyleById(id) {
    return getAllStyles(document.getElementById(id));
}

function getAllStyles(elem) {
    if (!elem) return []; // Element does not exist, empty list.
    var win = document.defaultView || window, style, styleNode = [];
    if (win.getComputedStyle) { /* Modern browsers */
        style = win.getComputedStyle(elem, '');
        for (var i=0; i<style.length; i++) {
            styleNode.push( style[i] + ':' + style.getPropertyValue(style[i]) );
            //               ^name ^           ^ value ^
        }
    } else if (elem.currentStyle) { /* IE */
        style = elem.currentStyle;
        for (var name in style) {
            styleNode.push( name + ':' + style[name] );
        }
    } else { /* Ancient browser..*/
        style = elem.style;
        for (var i=0; i<style.length; i++) {
            styleNode.push( style[i] + ':' + style[style[i]] );
        }
    }
    return styleNode;
}</code>
用於in 循環 for currentStyle(IE 獨有):

對 currentStyle 物件使用普通的 for in 循環,該物件僅存在於 Internet Explorer 中。

類似地循環內聯樣式:

使用相同的循環方法來擷取內聯樣式屬性。

<code class="javascript">console.log(getStyleById('my-element'));</code>

程式碼實作用法使用此函數中,只需使用元素的ID呼叫getStyleById 即可。例如:這將列印一個數組,其中包含應用於 ID 為「my-element」的元素的所有樣式屬性及其值。

以上是如何使用 JavaScript 透過 ID 取得應用於 HTML 元素的所有樣式屬性及其值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn