欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-01 07:51:47
本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《javascript切换特效与技巧总结》、《javascript动画特效与技巧汇总》、《javascript查找算法技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》、《javascript中json操作技巧总结》、《javascript错误与调试技巧总结》及《javascript数学运算用法总结

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