首頁 > web前端 > css教學 > 為什麼在 JavaScript 中取得 CSS 屬性時 `this.style[property]` 有時會傳回空字串?

為什麼在 JavaScript 中取得 CSS 屬性時 `this.style[property]` 有時會傳回空字串?

Linda Hamilton
發布: 2024-12-06 18:23:13
原創
444 人瀏覽過

Why Does `this.style[property]` Sometimes Return an Empty String When Getting CSS Properties in JavaScript?

從JavaScript 取得樣式屬性

在JavaScript 中處理CSS 樣式時,在某些情況下this.style[property] 可能會返回空字串。

理解this.style[property]

this.style[property] 存取目前元素的內聯樣式。內聯樣式是直接在

範例場景

考慮以下程式碼:

function css(prop, value) {
  if (value == null) {
    return this.style[prop];
  }
  if (prop) {
    this.style[prop] = value;
  }
  return true;
}
登入後複製

此函數可讓您取得或設定使用element.css(property, value) 的元素上的CSS 屬性。

但是,如果您嘗試檢索未設定內聯的屬性,例如以下範例中的 height:

<div>
登入後複製
const element = document.getElementById('test');
const height = element.css('height'); // Returns ""
登入後複製

在這種情況下,height將傳回空字串,因為它沒有定義為內聯樣式.

解決方案

存取外部樣式表中定義的CSS 屬性或使用類,您可以使用getCompulatedStyle() 函數。此函數會擷取元素的計算樣式,其中包含套用於該元素的所有樣式:

const element = document.getElementById('test');
const height = getComputedStyle(element).height; // Returns "100px"
登入後複製

在您提供的更新程式碼中,您已透過使用getCompulatedStyle() 來擷取計算樣式來修正css 函數元素的:

function css(prop, value) {
  // Code to get or set CSS properties
  if (value == null) {
    var b = (window.navigator.userAgent).toLowerCase();
    var s;
    if (/msie|opera/.test(b)) {
      s = this.currentStyle;
    } else if (/gecko/.test(b)) {
      s = document.defaultView.getComputedStyle(this, null);
    }
    if (s[prop] != undefined) {
      return s[prop];
    }
    return this.style[prop];
  }
  // Code to continue with your logic
}
登入後複製

透過使用此更新的函數,您現在可以正確檢索在外部樣式表或使用類別中定義的CSS屬性,即使它們不是設定為內聯樣式。

以上是為什麼在 JavaScript 中取得 CSS 屬性時 `this.style[property]` 有時會傳回空字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板