最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

html - I want to get the font-size using window.getComputedStyle() in javascript but it can't - Stack Overflow

matteradmin5PV0评论

var menu = document.getElementsByClassName("menu");
var a = window.getComputedStyle(menu, null).fontSize();
var fontSize = parseFloat(a);

alert("HELLO");

var menu = document.getElementsByClassName("menu");
var a = window.getComputedStyle(menu, null).fontSize();
var fontSize = parseFloat(a);

alert("HELLO");

That is the code. So I want to get the font-size of a class named menu. Then, I want to alert("HELLO"). But, the alert won't run and when I change the alert into alert(fontSize), it is not working either. Is anything wrong with my code?

Share Improve this question asked Oct 7, 2018 at 14:24 Armand DwiArmand Dwi 1371 silver badge5 bronze badges 1
  • Have a look at:w3schools./jsref/… – Prashant Pimpale Commented Oct 7, 2018 at 14:26
Add a ment  | 

3 Answers 3

Reset to default 4

You should pass an element to .getComputedStyle method. .getElementsByClassName returns a collection. You either need to select the first element from the set or use .querySelector for selecting the target element. Also note that returned object by .getComputedStyle doesn't have fontSize method, it's a property. You can also use the .getPropertyValue for getting a specific value:

// select the first .menu element
var menu = document.querySelector(".menu");
var a = window.getComputedStyle(menu, null).getPropertyValue('font-size');
var menu = document.querySelector(".menu");
var styles = menu.putedStyleMap();

styles will give the object which has all the styles available in it. Just print it and check if you got it.

There are a couple of things wrong with your code.

First, getComputedStyle expects its first argument to be a single DOM element. getElementsByClassName returns a HTMLCollection, an array-like object containing a live collection of DOM elements. That is why, if you look in your error console, you should see an error message along the lines of "TypeError: Argument 1 of Window.getComputedStyle does not implement interface Element.".

Second, getComputedStyle returns a CSSStyleDeclaration object, which does not have a .fontSize method. It does however have a getPropertyValue method that you can use to get the font size.

// use querySelector, which returns a single DOM element that is the first in
// the DOM to match the provided query string
let menu = document.querySelector(".menu");

// You can just omit the second parameter if you are not targeting a pseudo
// element.
let styles = window.getComputedStyle(menu);
// get the font size in px
let fontSize = styles.getPropertyValue('font-size');
fontSize = parseFloat(fontSize);

alert('font-size =' + fontSize);
.menu {
  font-size: 1.5em;
}
<div class="menu">Menu</div>

Post a comment

comment list (0)

  1. No comments so far