Maison > interface Web > tutoriel CSS > Pourquoi `this.style[property]` renvoie-t-il une chaîne vide en JavaScript ?

Pourquoi `this.style[property]` renvoie-t-il une chaîne vide en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-12-07 00:17:14
original
340 Les gens l'ont consulté

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

JavaScript this.style[property] Renvoyer une chaîne vide : une clarification

Alors que this.style[property] récupère principalement les styles en ligne appliqués directement à un élément, il existe des cas où une chaîne vide est obtenue. Cela se produit lorsque la propriété en question n'est pas définie explicitement dans les styles en ligne de l'élément.

Dans l'extrait de code fourni :

function css(prop, value) {
  if (value == null) {
    return this.style[prop];
  }
  if (prop) {
    this.style[prop] = value;
  }
  return true;
}
Copier après la connexion

Lors de l'appel de element.css("height"), vous Nous essayons d'accéder à la propriété de hauteur en ligne. Cependant, dans le code HTML fourni :

<div>
Copier après la connexion

Aucune propriété de hauteur en ligne n'est définie. Par conséquent, this.style["height"] renvoie une chaîne vide.

Pour récupérer la hauteur calculée, qui inclut les styles en cascade à partir de feuilles de style externes ou en ligne, vous pouvez utiliser la méthode getComputedStyle() :

const element = document.getElementById("test");
const style = getComputedStyle(element);
const height = style.height;
Copier après la connexion

Dans ce cas, la hauteur serait égale à "100px".

Pour résoudre le problème dans le code initial, vous pouvez modifier la fonction CSS comme suit :

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;
}
Copier après la connexion

Avec cette modification, element.css("height") renverrait "100px" car la fonction vérifie désormais également les styles calculés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal