- Published on
用面向过程和面向对象方式写的一个tao标签卡demo
- Authors
- Name
- 林晓东
- @xiaodong5959
主要是需要多思考面向对象中this的应用。
面向过程
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.on{
background-color: red;
}
#tab div{
width: 400px;
height: 400px;
display: none;
border: 1px solid #ccc;
}
#tab .block{
display: block;
}
</style>
<script>
window.onload=function(){
var oPrent = document.getElementById('tab');
var oMenu = oPrent.getElementsByTagName('input');
var oShow = oPrent.getElementsByTagName('div');
for(i=0;i<oMenu.length;i++){
oMenu[i].index = i;
oMenu[i].onclick=function(){
for(j=0;j<oMenu.length;j++){
oMenu[j].className = '';
oShow[j].className = '';
}
this.className = 'on';
oShow[this.index].className = 'block';
}
}
var nowShow = 0;
var timmer = setInterval(function(){
if(nowShow>=oMenu.length){
nowShow = 0;
}
oMenu[nowShow].index = i;
for(j=0;j<oMenu.length;j++){
oMenu[j].className = '';
oShow[j].className = '';
}
oMenu[nowShow].className = 'on';
oShow[nowShow].className = 'block';
nowShow++;
},1000)
}
</script>
</head>
<body>
<div id="tab">
<input type="button" class="on" value="1">
<input type="button" value="2">
<input type="button" value="3">
<div class="block">111111111</div>
<div>222222222</div>
<div>333333333</div>
</div>
</body>
</html>
面向对象
深刻理解this的使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.on{
background-color: red;
}
#tab div{
width: 400px;
height: 400px;
display: none;
border: 1px solid #ccc;
}
#tab .block{
display: block;
}
</style>
<script>
window.onload=function(){
function Tab(name){
this.oPrent = document.getElementById(name);
this.oMenu = this.oPrent.getElementsByTagName('input');
this.oShow = this.oPrent.getElementsByTagName('div');
}
Tab.prototype.init = function(){
var This = this;
for(i=0;i<this.oMenu.length;i++){
this.oMenu[i].index = i;
this.oMenu[i].onclick=function(){
This.change(this);
}
}
}
Tab.prototype.change = function(obj){
for(j=0;j<this.oMenu.length;j++){
this.oMenu[j].className = '';
this.oShow[j].className = '';
}
obj.className = 'on';
this.oShow[obj.index].className = 'block';
}
Tab.prototype.auto = function(){
var nowShow = 0;
var This = this;
var timmer = setInterval(function(){
if(nowShow>=This.oMenu.length){
nowShow = 0;
}
This.oMenu[nowShow].index = i;
for(j=0;j<This.oMenu.length;j++){
This.oMenu[j].className = '';
This.oShow[j].className = '';
}
This.oMenu[nowShow].className = 'on';
This.oShow[nowShow].className = 'block';
nowShow++;
},1000)
}
var tab = new Tab('tab');
tab.init();
tab.auto();
}
</script>
</head>
<body>
<div id="tab">
<input type="button" class="on" value="1">
<input type="button" value="2">
<input type="button" value="3">
<div class="block">111111111</div>
<div>222222222</div>
<div>333333333</div>
</div>
</body>
</html>