网络编程
位置:首页>> 网络编程>> JavaScript>> JS基于面向对象实现的选项卡效果示例

JS基于面向对象实现的选项卡效果示例

作者:鬼畜十三  发布时间:2024-04-19 10:42:56 

标签:JS,面向对象,选项卡

本文实例讲述了JS基于面向对象实现的选项卡效果。分享给大家供大家参考,具体如下:

中间过渡环节:把面向过程的程序,改写成面向对象的形式


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
#div1 input {background:#CCC;}
#div1 .active {background:yellow;}
#div1 div {width:200px; height:200px; background:#CCC; display:none;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function ()
{
 var oDiv=document.getElementById('div1');
 var aBtn=oDiv.getElementsByTagName('input');
 var aDiv=oDiv.getElementsByTagName('div');
 var i=0;
 for(i=0;i<aBtn.length;i++)
 {
   aBtn[i].index=i;
   aBtn[i].onclick=function ()
   {
     for(i=0;i<aBtn.length;i++)
     {
       aBtn[i].className='';
       aDiv[i].style.display='none';
     }
     this.className='active';
     aDiv[this.index].style.display='block';
   };
 }
};
</script>
</head>
<body>
<div id="div1">
 <input class="active" type="button" value="教育" />
 <input type="button" value="财经" />
 <input type="button" value="aaa" />
 <div style="display:block;">1asdfasdfds</div>
 <div>2xzcvxzcv</div>
 <div>5332342345</div>
</div>
</body>
</html>

改写注意事项:

1.前提:所有代码必须包含在window.onload里面
2.去掉函数嵌套(window.onload里面嵌套的函数拎到window.onload外面去)
3.不能有函数嵌套,但可以有全局变量(比如onclick函数拎出去后,aBtn是window.onload函数里的私有变量,onclick函数不能用)

过程:

1.onload(初始化整个程序)→构造函数(初始化一个对象)
2.全局变量→属性
3.函数→方法


window.onload=function(){
 var oTab=new TabSwitch("div1");
}
function TabSwitch(id)
{
 var oDiv=document.getElementById(id);
 this.aBtn=oDiv.getElementsByTagName('input');
 this.aDiv=oDiv.getElementsByTagName('div');
 var i=0;
 var _this=this;     //this是new出来的对象,即oTab
 for(i=0;i<this.aBtn.length;i++)
 {
   this.aBtn[i].index=i;
   this.aBtn[i].onclick=function(){
     _this.tab(this);  //通过参数的形式,将被点击的按钮传到下面去
   };
 }
};
TabSwitch.prototype.tab=function(oBtn){
 for(i=0;i<this.aBtn.length;i++)
 {
   this.aBtn[i].className='';
   this.aDiv[i].style.display='none';
 }
 oBtn.className='active';  //要被点击的按钮改变,而不是new出来的对象,所以这里不用this
 this.aDiv[oBtn.index].style.display='block';
}

希望本文所述对大家JavaScript程序设计有所帮助。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com