The example in this article describes how to implement a simple switchable tab effect in js. Share it with everyone for your reference. The details are as follows:
As shown in the picture, the simplest pure tab
The first step is, of course, to write the html code and css style
<!DOCTYPE html> <html> <head> <meta charset="gb2312" /> <title>无标题文档</title> <style> body,ul,li{margin:0; padding:0; font:12px/1.5 arial;} ul,li{list-style:none;} .wrap{width:500px; margin:20px auto;} .hide{display:none;} #tab_t{height:25px;border-bottom:1px solid #ccc;} #tab_t li{float:left; width:80px; height:24px; line-height:24px; margin:0 4px; text-align:center; border:1px solid #ccc; border-bottom:none; background:#f5f5f5; cursor:pointer} #tab_t .act{ position:relative; height:25px; margin-bottom:-1px; background:#fff;} #tab_c{border:1px solid #ccc; border-top:none; padding:20px;} </style> </head> <body> <div class="wrap"> <ul id="tab_t"> <li class="act">选择1</li> <li>选择2</li> <li>选择3</li> <li>选择4</li> </ul> <div id="tab_c"> <div>内容1</div> <div class="hide">内容2</div> <div class="hide">内容3</div> <div class="hide">内容4</div> </div> </div> </body> </html>
The second step is to achieve a simple switching effect
Point 1:
abc.document.getElementsByTagName("li")
Get all the elements with the label li under abc. What is returned is a collection of elements with some attributes of the array.
Point 2: Loop, first loop to add the onclick event to li, and then when the onlink event is clicked, loop again to remove the act style of all tabs and hide all content. Then let the clicked option and corresponding content display.
Point 3:
tab_t_li[i].index = i;
When looping, add an extra attribute to the tab and assign a value to match the tab and content.
<!DOCTYPE html> <html> <head> <meta charset="gb2312" /> <title>无标题文档</title> <style> body,ul,li{margin:0; padding:0; font:12px/1.5 arial;} ul,li{list-style:none;} .wrap{width:500px; margin:20px auto;} .hide{display:none;} #tab_t{ height:25px; border-bottom:1px solid #ccc; } #tab_t li{ float:left; width:80px; height:24px; line-height:24px; margin:0 4px; text-align:center; border:1px solid #ccc; border-bottom:none; background:#f5f5f5; cursor:pointer } #tab_t .act{ position:relative; height:25px; margin-bottom:-1px; background:#fff; } #tab_c{ border:1px solid #ccc; border-top:none; padding:20px; } </style> <script> window.onload = function(){ var tab_t = document.getElementById("tab_t"); var tab_t_li = tab_t.getElementsByTagName("li"); var tab_c = document.getElementById("tab_c"); var tab_c_li = tab_c.getElementsByTagName("div"); var len = tab_t_li.length; var i=0; for(i=0; i<len; i++){ tab_t_li[i].index = i; tab_t_li[i].onclick = function(){ for(i=0; i<len; i++){ tab_t_li[i].className = ''; tab_c_li[i].className = 'hide'; } tab_t_li[this.index].className = 'act'; tab_c_li[this.index].className = ''; } } } </script> </head> <body> <div class="wrap"> <ul id="tab_t"> <li class="act">选择1</li> <li>选择2</li> <li>选择3</li> <li>选择4</li> </ul> <div id="tab_c"> <div>内容1</div> <div class="hide">内容2</div> <div class="hide">内容3</div> <div class="hide">内容4</div> </div> </div> </body> </html>
The third step is to write it as a function. The above writing method can only use one tab per page. If you add another one, you need to make a copy and change many variable names.
Key points: tab_t_li[i][evt] Because the value is passed as a string, if it is written directly, it will be tab_t_li[i]. "onclick" cannot be executed like this, but will tab_t_li["onclick"] be executed like this? question.
Okay, now you can have multiple switches on one page. You just need to write the corresponding id name, tag name, and event name when calling the function
<!DOCTYPE html> <html> <head> <meta charset="gb2312" /> <title>无标题文档</title> <style> body,ul,li{margin:0; padding:0; font:12px/1.5 arial;} ul,li{list-style:none;} .wrap{width:500px; margin:20px auto;} .hide{display:none;} #tab_t{ height:25px; border-bottom:1px solid #ccc; } #tab_t li{ float:left; width:80px; height:24px; line-height:24px; margin:0 4px; text-align:center; border:1px solid #ccc; border-bottom:none; background:#f5f5f5; cursor:pointer } #tab_t .act{ position:relative; height:25px; margin-bottom:-1px; background:#fff; } #tab_c{ border:1px solid #ccc; border-top:none; padding:20px; } </style> <script> window.onload = function(){ tab("tab_t","li","tab_c","div","onmouseover") function tab(tab_t,tab_t_tag,tab_c,tag_c_tag,evt){ var tab_t = document.getElementById(tab_t); var tab_t_li = tab_t.getElementsByTagName(tab_t_tag); var tab_c = document.getElementById(tab_c); var tab_c_li = tab_c.getElementsByTagName(tag_c_tag); var len = tab_t_li.length; var i=0; for(i=0; i<len; i++){ tab_t_li[i].index = i; tab_t_li[i][evt] = function(){ for(i=0; i<len; i++){ tab_t_li[i].className = ''; tab_c_li[i].className = 'hide'; } tab_t_li[this.index].className = 'act'; tab_c_li[this.index].className = ''; } } } } </script> </head> <body> <div class="wrap"> <ul id="tab_t"> <li class="act">选择1</li> <li>选择2</li> <li>选择3</li> <li>选择4</li> </ul> <div id="tab_c"> <div>内容1</div> <div class="hide">内容2</div> <div class="hide">内容3</div> <div class="hide">内容4</div> </div> </div> </body> </html>
I hope this article will be helpful to everyone’s JavaScript programming design.