Home > Web Front-end > CSS Tutorial > Why Does `this.style[property]` Return an Empty String in JavaScript?

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

Mary-Kate Olsen
Release: 2024-12-07 00:17:14
Original
374 people have browsed it

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

JavaScript this.style[property] Returning an Empty String: A Clarification

While this.style[property] primarily retrieves inline styles applied directly to an element, there are instances where an empty string is obtained. This happens when the property in question is not set explicitly in the element's inline styles.

In the provided code snippet:

function css(prop, value) {
  if (value == null) {
    return this.style[prop];
  }
  if (prop) {
    this.style[prop] = value;
  }
  return true;
}
Copy after login

When calling element.css("height"), you're attempting to access the inline height property. However, in the HTML provided:

<div>
Copy after login

No inline height property is defined. Hence, this.style["height"] returns an empty string.

To retrieve the computed height, which includes cascade styles from external or inline stylesheets, you can use the getComputedStyle() method:

const element = document.getElementById("test");
const style = getComputedStyle(element);
const height = style.height;
Copy after login

In this case, height would equal "100px".

To resolve the issue in the initial code, you can modify the css function as follows:

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;
}
Copy after login

With this modification, element.css("height") would return "100px" because the function now also checks for computed styles.

The above is the detailed content of Why Does `this.style[property]` Return an Empty String in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template