Heim > Web-Frontend > CSS-Tutorial > Warum gibt „this.style[property]' in JavaScript eine leere Zeichenfolge zurück?

Warum gibt „this.style[property]' in JavaScript eine leere Zeichenfolge zurück?

Mary-Kate Olsen
Freigeben: 2024-12-07 00:17:14
Original
372 Leute haben es durchsucht

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

JavaScript this.style[property] Gibt eine leere Zeichenfolge zurück: Eine Klarstellung

Während this.style[property] hauptsächlich angewendete Inline-Stile abruft direkt auf ein Element anwenden, gibt es Fälle, in denen eine leere Zeichenfolge erhalten wird. Dies geschieht, wenn die betreffende Eigenschaft nicht explizit in den Inline-Stilen des Elements festgelegt ist.

Im bereitgestellten Code-Snippet:

function css(prop, value) {
  if (value == null) {
    return this.style[prop];
  }
  if (prop) {
    this.style[prop] = value;
  }
  return true;
}
Nach dem Login kopieren

Beim Aufruf von element.css("height"), Sie Ich versuche, auf die Inline-Höheneigenschaft zuzugreifen. Im bereitgestellten HTML heißt es jedoch:

<div>
Nach dem Login kopieren

Es ist keine Inline-Höheneigenschaft definiert. Daher gibt this.style["height"] eine leere Zeichenfolge zurück.

Um die berechnete Höhe abzurufen, die Kaskadenstile aus externen oder Inline-Stylesheets umfasst, können Sie die Methode getComputedStyle() verwenden:

const element = document.getElementById("test");
const style = getComputedStyle(element);
const height = style.height;
Nach dem Login kopieren

In diesem Fall würde die Höhe „100px“ betragen.

Um das Problem im ursprünglichen Code zu beheben, können Sie das CSS ändern Funktion wie folgt:

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;
}
Nach dem Login kopieren

Mit dieser Änderung würde element.css("height") „100px“ zurückgeben, da die Funktion jetzt auch nach berechneten Stilen sucht.

Das obige ist der detaillierte Inhalt vonWarum gibt „this.style[property]' in JavaScript eine leere Zeichenfolge zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage