Rumah > hujung hadapan web > tutorial css > Mengapakah `this.style[property]` Mengembalikan Rentetan Kosong dalam JavaScript?

Mengapakah `this.style[property]` Mengembalikan Rentetan Kosong dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-07 00:17:14
asal
341 orang telah melayarinya

Why Does `this.style[property]` Return an Empty String in JavaScript?

JavaScript this.style[property] Mengembalikan Rentetan Kosong: Penjelasan

Sementara this.style[property] terutamanya mendapatkan semula gaya sebaris yang digunakan terus ke elemen, terdapat keadaan di mana rentetan kosong diperolehi. Ini berlaku apabila sifat yang dipersoalkan tidak ditetapkan secara eksplisit dalam gaya sebaris elemen.

Dalam coretan kod yang disediakan:

function css(prop, value) {
  if (value == null) {
    return this.style[prop];
  }
  if (prop) {
    this.style[prop] = value;
  }
  return true;
}
Salin selepas log masuk

Apabila memanggil element.css("height"), anda sedang cuba untuk mengakses sifat ketinggian sebaris. Walau bagaimanapun, dalam HTML yang disediakan:

<div>
Salin selepas log masuk

Tiada sifat ketinggian sebaris ditentukan. Oleh itu, this.style["height"] mengembalikan rentetan kosong.

Untuk mendapatkan semula ketinggian yang dikira, yang termasuk gaya lata daripada helaian gaya luaran atau sebaris, anda boleh menggunakan kaedah getComputedStyle():

const element = document.getElementById("test");
const style = getComputedStyle(element);
const height = style.height;
Salin selepas log masuk

Dalam kes ini, ketinggian akan sama dengan "100px".

Untuk menyelesaikan isu dalam kod awal, anda boleh mengubah suai fungsi css seperti berikut:

function css(prop, value) {
  if (value == null) {
    const b = (window.navigator.userAgent).toLowerCase();
    let 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];
  }
  if (prop) {
    this.style[prop] = value;
  }
  return true;
}
Salin selepas log masuk

Dengan pengubahsuaian ini, element.css("height") akan mengembalikan "100px" kerana fungsi itu kini turut menyemak gaya yang dikira.

Atas ialah kandungan terperinci Mengapakah `this.style[property]` Mengembalikan Rentetan Kosong dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan