How to toggle Elements with JavaScript

This JavaScript tutorial guides you to build a JavaScript code for hiding and showing the HTML elements on the web pages, work with element's ID. This JavaScript are very detailed, so please go to the full post for more instructions.


Sampled by © JavaScriptBank.com

This is a quick tutorial to explain how you can easily show and hide page elements with javascript.

To begin with, each item that you want to hide/show should have a unique HTML ID. Let's begin with a very simple HTML page.

<h1>This is my title</h1>
<div id="content">
	<h2>Div1 Follows</h2>
	<div id="div1">
		This is where my first div will be.
	</div>
	<h2>Div2 Follows</h2>
	<div id="div2">
		This is where my second div will be.
	</div>
</div>

We will then write a function that will hide all of the appropriate divs (in this case, div1 and div2).

function hideAll() {
	var myDivs = Array('div1','div2') // Add each div ID to this array
	for(var i in myDivs) {
		if(document.getElementById(myDivs[i]) {
			document.getElementById(myDivs[i]).style.display = 'none';
		}
	}
}

That function, when called, will hide all of the divs that are included in the "myDivs" array. However, we need a way to show the appropriate divs again, so we are going to modify the function slightly to insert a new link where the div should be.

function hideAll() {
	var myDivs = Array('div1','div2') // Add each div ID to this array
	for(var i in myDivs) {
		if(document.getElementById(myDivs[i])) {
			document.getElementById(myDivs[i]).style.display = 'none';
			if(!document.getElementById('linkto_'+myDivs[i])) {
				var myLink = document.createElement('a');
				myLink.id = 'linkto_'+myDivs[i];
				myLink.href = '#'+myDivs[i];
				myLink.onclick = function() {
					showDiv(this.href);
					//return false; //uncomment this line and comment or remove the next line if you don't want the page to jump to the revealed div when the link is clicked
					return true;
				};
				myLink.appendChild(document.createTextNode('Expand this entry'));
				document.getElementById(myDivs[i]).parentNode.insertBefore(myLink,document.getElementById(myDivs[i]).nextSibling);
			}
		}
	}
}

Now that we've inserted links that will show the divs, we need to actually write the function that's going to reveal the div when the link is clicked.

function showDiv(what) {
	hideAll(); // Comment this line out if you don't want the rest of the divs to be hidden when you reveal a new one
	what = what.split('#'); // If our div name/ID includes the hash symbol, we'll split it at that point
	what = what.pop(); // The function above turned our div name/ID into an array. This will grab the last element of the array
	if(document.getElementById(what)) {
		document.getElementById(what).style.display = '';
		if(document.getElementById('linkto_'+what)) {
			document.getElementById('linkto_'+what).parentNode.removeChild(document.getElementById('linkto_'+what));
		}
	}
}

Now, we'll put these two functions together at the very bottom of our document (just above the closing body tag) and will then call the appropriate functions. I've also added a little bit of script that will check to see if someone loaded the page trying to access a specific div, and will show that div if so. Therefore, the entire body section of our HTML page will look like:

<body>
<h1>This is my title</h1>
<div id="content">
	<h2>Div1 Follows</h2>
	<div id="div1">
		This is where my first div will be.
	</div>
	<h2>Div2 Follows</h2>
	<div id="div2">
		This is where my second div will be.
	</div>
</div>
<script type="text/javascript">
function hideAll() {
	var myDivs = Array('div1','div2') // Add each div ID to this array
	for(var i in myDivs) {
		if(document.getElementById(myDivs[i])) {
			document.getElementById(myDivs[i]).style.display = 'none';
			if(!document.getElementById('linkto_'+myDivs[i])) {
				var myLink = document.createElement('a');
				myLink.id = 'linkto_'+myDivs[i];
				myLink.href = '#'+myDivs[i];
				myLink.onclick = function() {
					showDiv(this.href);
					//return false; //uncomment this line and comment or remove the next line if you don't want the page to jump to the revealed div when the link is clicked
					return true;
				};
				myLink.appendChild(document.createTextNode('Expand this entry'));
				document.getElementById(myDivs[i]).parentNode.insertBefore(myLink,document.getElementById(myDivs[i]).nextSibling);
			}
		}
	}
}
function showDiv(what) {
	hideAll(); // Comment this line out if you don't want the rest of the divs to be hidden when you reveal a new one
	what = what.split('#'); // If our div name/ID includes the hash symbol, we'll split it at that point
	what = what.pop(); // The function above turned our div name/ID into an array. This will grab the last element of the array
	if(document.getElementById(what)) {
		document.getElementById(what).style.display = '';
		if(document.getElementById('linkto_'+what)) {
			document.getElementById('linkto_'+what).parentNode.removeChild(document.getElementById('linkto_'+what));
		}
	}
}
hideAll();
if(window.location.hash) {
	showDiv(window.location.hash);
}
</script>
</body>

Language
Translate this page to English Translate this page to French Translate this page to Vietnamese

Recent articles
Insights for Advanced Zooming and Panning in JavaScript Charts
How to open a car sharing service
Vue developer as a vital part of every software team
Vue.js developers: hire them, use them and get ahead of the competition
3 Reasons Why Java is so Popular
Migrate to Angular: why and how you should do it
The Possible Working Methods of Python Ideology
JavaScript Research Paper: 6 Writing Tips to Craft a Masterpiece
Learning How to Make Use of New Marketing Trends
5 Important Elements of an E-commerce Website


Top view articles
Adding JavaScript to WordPress Effectively with JavaScript Localization feature
Top 10 Beautiful Christmas Countdown Timers
Top 10 Best JavaScript eBooks that Beginners should Learn
65 Free JavaScript Photo Gallery Solutions
16 Free Code Syntax Highlighters by Javascript For Better Programming
Best Free Linux Web Programming Editors
Top 50 Most Addictive and Popular Facebook mini games
More 30 Excellent JavaScript/AJAX based Photo Galleries to Boost your Sites
Top 10 Free Web Chat box Plug-ins and Add-ons
The Ultimate JavaScript Tutorial in Web Design


Free JavaScript Tutorials & Articles
at www.JavaScriptBank.com