Javascript offsetWidth returning undefined

chazbot7 picture chazbot7 · Aug 19, 2013 · Viewed 9.4k times · Source

I have a JS function that gets the width of a div on my page:

function getWidth() { 
   var container = document.getElementsByClassName('tag');
   var message = "The width of the contents width padding: " + container.width + "px.\n";
   alert(message);
}

The function doesn't run until page is loaded:

<body onload="getWidth()">

And the div is defined in CSS as a percentage, with a max-width of 900px, which is what the output should be. But instead, I'm getting this alert:

The width of the contents width padding: undefinedpx.

I've looked around for an answer, but it looks like this should be work. Any reason why it's not working?

Answer

epascarello picture epascarello · Aug 19, 2013

getElementsByClassName returns a collection of nodes.

You are acting like it is one.

You would need to select the index.

var container = document.getElementsByClassName('tag')[0];