Setting DIV width and height in JavaScript

Javascript

Javascript Problem Overview


I have a div with id="div_register". I want to set its width dynamically in JavaScript.

I am using this following code:

getElementById('div_register').style.width=500;

but this line of code isn't working.

I also tried using the units px like the following, still no luck:

getElementById('div_register').style.width='500px';

and

getElementById('div_register').style.width='500';

and

getElementById('div_register').style.width=500px;

but none of this code is working for me.

I don't know what's going wrong.

I am using Mozilla Firefox.

EDIT

<html>
    <head>
        <title>Untitled</title>
        <script>
            function show_update_profile() {
                document.getElementById('black_fade').style.display='block';
                //document.getElementById.('div_register').style.left=((window.innerWidth)-500)/20;
                document.getElementById('div_register').style.height= "500px";
                document.getElementById('div_register').style.width= '500px';
                //alert('kutta');
                  document.getElementById('div_register').style.display='block';
                document.getElementById('register_flag').value= 1;
                document.getElementById('physical_flag').value= 0;
                document.getElementById('cultural_flag').value= 0;
                document.getElementById('professional_flag').value= 0;
                document.getElementById('lifestyle_flag').value= 0;
                document.getElementById('hobby_flag').value= 0;
                //alert(window.innerWidth);
            }
        </script>
        <style>
            .white_content {
                display:none;
            }
        </style>
    </head>
	<body>
		<div id="main">
			<input type="button" onclick="javascript:show_update_profile();" id="show" name="show" value="show"/>
		</div>
		<div id="div_register">
			<table cellpadding="0" cellspacing="0" border="0">
				<tr>
				    <td>
					  welcome 
				    </td>
				</tr>
			</table>
		</div>
	</body>
</html>

Javascript Solutions


Solution 1 - Javascript

The properties you're using may not work in Firefox, Chrome, and other non-IE browsers. To make this work in all browsers, I also suggest adding the following:

document.getElementById('div_register').setAttribute("style","width:500px");

For cross-compatibility, you will still need to use the property. Order may also matter. For instance, in my code, when setting style properties with JavaScript, I set the style attribute first, then I set the properties:

document.getElementById("mydiv").setAttribute("style","display:block;cursor:pointer;cursor:hand;");
document.getElementById("mydiv").style.display = "block";
document.getElementById("mydiv").style.cursor = "hand";

Thus, the most cross-browser compatible example for you would be:

document.getElementById('div_register').setAttribute("style","display:block;width:500px");
document.getElementById('div_register').style.width='500px';

I also want to point out that a much easier method of managing styles is to use a CSS class selector and put your styles in external CSS files. Not only will your code be much more maintainable, but you'll actually make friends with your Web designers!

document.getElementById("div_register").setAttribute("class","wide");

.wide {
    display:block;
    width:500px;
}

.hide {
    display:none;
}

.narrow {
    display:block;
    width:100px;
}

Now, I can easily just add and remove a class attribute, one single property, instead of calling multiple properties. In addition, when your Web designer wants to change the definition of what it means to be wide, he or she does not need to go poking around in your beautifully maintained JavaScript code. Your JavaScript code remains untouched, yet the theme of your application can be easily customized.

This technique follows the rule of separating your content (HTML) from your behavior (JavaScript), and your presentation (CSS).

Solution 2 - Javascript

These are several ways to apply style to an element. Try any one of the examples below:

1. document.getElementById('div_register').className = 'wide';
  /* CSS */ .wide{width:500px;}
2. document.getElementById('div_register').setAttribute('class','wide');
3. document.getElementById('div_register').style.width = '500px';

Solution 3 - Javascript

Fix the typos in your code (document is spelled wrong on lines 3 & 4 of your function, and change the onclick event handler to read: onclick="show_update_profile()" and you'll be fine. @jmort's advice is good - simply set up 2 css classes that you switch between in javascript - it'll make things easier.

You might also check out element.addEventListener for assigning event handlers to your elements.

Solution 4 - Javascript

The onclick attribute of a button takes a string of JavaScript, not an href like you provided. Just remove the "javascript:" part.

Solution 5 - Javascript

If you remove the javascript: prefix and remove the parts for the unknown ids like 'black_fade' from your javascript code, this should work in firefox

Condensed example:

<html>
	<head>
		<script type="text/javascript">
			function show_update_profile() {
			   document.getElementById('div_register').style.height= "500px";
			   document.getElementById('div_register').style.width= "500px";
			   document.getElementById('div_register').style.display='block';
			   return true;
		   }
		</script>
		<style>
		   /* just to show dimensions of div */
		   #div_register
		   {
				background-color: #cfc;
		   }
		</style>
	</head>
	<body>
		<div id="main">
			<input type="button" onclick="show_update_profile();" value="show"/>
		</div>
		<div id="div_register">
			<table>
				<tr>
				   <td>
					 welcome 
				   </td>
				</tr>
			</table>
		</div>
	</body>
</html>

Solution 6 - Javascript

Be careful of span!

myspan.styles.width='100px' doesn't want to work.

Change the span to a div.

Solution 7 - Javascript

You have to use document. The Document interface represents any web page loaded in the browser and serves as an entry point into the web page's content,

know more

document.getElementById('div_register').style.width='500px';

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSaswatView Question on Stackoverflow
Solution 1 - Javascriptjmort253View Answer on Stackoverflow
Solution 2 - JavascriptValli69View Answer on Stackoverflow
Solution 3 - JavascriptDaniel SzaboView Answer on Stackoverflow
Solution 4 - JavascriptjpsimonsView Answer on Stackoverflow
Solution 5 - JavascriptpowerMichaView Answer on Stackoverflow
Solution 6 - JavascriptAndy BView Answer on Stackoverflow
Solution 7 - JavascriptMD SHAYONView Answer on Stackoverflow