Reputation: 913
I'm trying to write a script to change the width of the page, considering user's client width. It's something like this:
function adjustWidth() {
width = 0;
if (window.innerHeight) {
width = window.innerWidth;
} else if (document.documentElement && document.documentElement.clientHeight) {
width = document.documentElement.clientWidth;
} else if (document.body) {
width = document.body.clientWidth;
}
if (width < 1152) {
document.getElementsByTagName("body").style.width="950px";
}
if (width >= 1152) {
document.getElementsByTagName("body").style.width="1075px";
}
}
window.onresize = function() {
adjustWidth();
};
window.onload = function() {
adjustWidth();
};
With this script I get an error from Firebug:
document.getElementsByTagName("body").style is undefined
Now my question is, how can i access the style of body? Because in the css sheet its selector and width property are defined.
Upvotes: 21
Views: 65548
Reputation: 1068
As noted in comments (but strangely still missing among the answers), it should actually be document.body.style
. For example, document.body.style.backgroundColor = "#3f3f3f";
Upvotes: 1
Reputation: 1014
I believe what you get back from document.getElementsByTagName("body")
is HTMLCollection
. You should be able to use document.getElementsByTagName("body")[0].style
to get what you want.
Upvotes: 3
Reputation: 151
document.getElementsByTagName('body')[0].style = 'your code';
Example:
document.getElementsByTagName('body')[0].style = 'margin-top: -70px';
Upvotes: 11
Reputation: 1164
getElementsByTagName
returns an array of nodes so you must use []
to access elements.
Try document.getElementsByTagName("body")[0].style
Upvotes: 4
Reputation: 413720
That function returns a list of nodes, even though there's only one <body>
.
document.getElementsByTagName("body")[0].style = ...
Now, that said, you may want to look into doing this with CSS instead of JavaScript. With CSS media queries, you make such adjustments:
@media screen and (max-width: 1151px) {
body { width: 950px; }
}
@media screen and (min-width: 1152px) {
body { width: 1075px; }
}
Media queries work in IE9 and pretty much all other modern browsers. For IE8 you can fall back to JavaScript or just let the body be 100% of the viewport width or something.
Upvotes: 38