核心提示:tab栏封装,三种方法:一、存储当前索引,lis[i].index二、使用闭包实现。三、使用闭包实现,函数立即执行。HTML:!DOCTYPE htmlhtml lang=enheadmeta cha...
tab栏封装,三种方法:
一、存储当前索引,lis[i].index
二、使用闭包实现。
三、使用闭包实现,函数立即执行。
HTML:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tab栏封装</title> </head> <body> <p id="clothes" class="tab"> <p class="header"> <span class="current">新闻</span> <span>杭州</span> <span>浙江</span> <span>娱乐</span> </p> <p> <ul> <li class="current">新闻模块</li> <li>杭州模块</li> <li>浙江模块</li> <li>娱乐模块</li> </ul> </p> </p> <p id="beautity" class="tab"> <p class="header"> <span class="current">新闻</span> <span>杭州</span> <span>浙江</span> <span>娱乐</span> </p> <p> <ul> <li class="current">新闻模块</li> <li>杭州模块</li> <li>浙江模块</li> <li>娱乐模块</li> </ul> </p> </p> </body> </html>
CSS:
body,ul { padding: 0; margin: 0; } ul { list-style: none; } .tab { width: 300px; border: 1px solid #ccc; margin: 100px auto; } .tab .header { overflow: hidden; } .tab span { float: left; display: inline-block; width: 70px; height: 40px; line-height: 40px; padding-right: 5px; text-align: center; border-bottom: 1px solid #ccc; } .tab span.current { background: #eee; } .tab ul { height: 200px; } .tab ul li { height: 200px; background: #eee; display: none; } .tab ul li.current { display: block; }
JavaScript:
window.onload = function() { function $(id) { return document.getElementById(id); } /*function tab(obj){ var spans = $(obj).getElementsByTagName('span'); var lis = $(obj).getElementsByTagName('li'); for(var i = 0; i< spans.length; i++){ spans[i].index=i; spans[i].onmouseover = function(){ for(var j = 0; j< lis.length; j++){ lis[j].className =""; spans[j].className=""; } this.className="current"; lis[this.index].className="current"; } } }*/ //使用闭包方式实现方法1 function tab(obj) { var spans = $(obj).getElementsByTagName('span'); var lis = $(obj).getElementsByTagName('li'); for (var i = 0; i < spans.length; i++) { //spans[i].index=i; spans[i].onmouseover = fun(i, spans, lis); } } function(num, spans, lis) { return function() { for (var j = 0; j < lis.length; j++) { lis[j].className = ""; spans[j].className = ""; } spans[num].className = "current"; lis[num].className = "current"; } } //-------------------------或者 使用闭包方式实现方法2 function tab(obj) { var spans = $(obj).getElementsByTagName('span'); var lis = $(obj).getElementsByTagName('li'); for (var i = 0; i < spans.length; i++) { //spans[i].index=i; spans[i].onmouseover = function(num, spans, lis) { return function() { for (var j = 0; j < lis.length; j++) { lis[j].className = ""; spans[j].className = ""; } spans[num].className = "current"; lis[num].className = "current"; } } (i, spans, lis); //function(){} (); //立即执行,后面括号是参数 } } tab("clothes"); tab("beautity"); }