首先,面向过程的选择卡js代码台下:
window.onload = function () {
var oDiv = document.getElementById("div1");
var oBtn = oDiv.getElementsByTagName('input');
var aDiv = oDiv.getElementsByTagName('div');
for (var i = 0; i < oBtn.length; i++) {
oBtn[i].index = i;
oBtn[i].onclick = function () {
for (var i = 0; i < aDiv.length; i++) {
oBtn[i].className = '';
aDiv[i].style.display = 'none';
}
this.className = "active";
aDiv[this.index].style.display = 'block';
};
}
};
基于几代码,改写为面向对象来实现,代码如下:
window.onload = function () {
var tab = new TabSwitch('div1');//1、把window.onload事件对应的方法写成构造函数TabSwitch
};
function TabSwitch(id) {
var oDiv = document.getElementById(id);
this.oBtn = oDiv.getElementsByTagName('input');//将外面需要访问的变量改成属性
this.aDiv = oDiv.getElementsByTagName('div');
var _this = this;
for (var i = 0; i < this.oBtn.length; i++) {
this.oBtn[i].index = i;
this.oBtn[i].onclick = function () {
_this.tab(this);//这里的this变成了oBtn对象了,所以要在上面保存构造函数创建的对象代表的this
};
}
};
this.TabSwitch.prototype.tab = function (oBtn) {
for (var i = 0; i < this.aDiv.length; i++) {
this.oBtn[i].className = '';
this.aDiv[i].style.display = 'none';
}
oBtn.className = "active";
this.aDiv[oBtn.index].style.display = 'block';
};
页面的HTML如下:
<div id="div1">
<input class="active" type="button" name="name" value="教育" />
<input type="button" name="name" value="财经" />
<input type="button" name="name" value="aaa" />
<div style="display: block;">
lasdfae3efasdfae</div>
<div>
asdlkfaweiofjasdf</div>
<div>
sadfasdflaeifjd;slfew</div>
</div>
转载于:https://www.cnblogs.com/XChWaad/p/3329388.html