构造+原型实现tab切换
<!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>
div>div{ display: none; border: 1px solid #f00; height: 200px; width: 200px}
.red{ background: orange}
</style>
</head>
<body>
<div id='box'>
<input type="button" value="aaa" class="red">
<input type="button" value="bbb">
<input type="button" value="ccc">
<div style="display: block">aaa</div>
<div>bbb</div>
<div>ccc</div>
</div>
<script>
/*var box = document.getElementById('box')
var inp = box.getElementsByTagName('input')
var div = box.getElementsByTagName('div')
for(var i=0;i<inp.length;i++){
inp[i].index = i
inp[i].onclick = fun
}
function fun(){
for(var i=0;i<inp.length;i++){
inp[i].className=''
div[i].style.display = 'none'
}
// this.className = 'red'
inp[this.index].className = 'red'
div[this.index].style.display = 'block'
}*/
//面向对象 tab切换
function Tab(id){
this.box = document.getElementById(id)
this.inp = this.box.getElementsByTagName('input')
this.div = this.box.getElementsByTagName('div')
for(var i=0;i<this.inp.length;i++){
this.inp[i].index = i
// console.log(this.inp.length)
var self = this;// 存下原来的this指向对象
this.inp[i].onclick = function(){ // 点击事件里的this 发生改变了
self.fun(this)
console.log(this)
}
}
}
Tab.prototype.fun = function(x){
for(var i=0;i<this.inp.length;i++){
this.inp[i].className=''
this.div[i].style.display = 'none'
}
console.log(x.index)// this.inp[i].index = i
this.inp[x.index].className = 'red'
this.div[x.index].style.display = 'block'
}
new Tab('box');
</script>
</body>
</html>