//请在userFlie中传入自己需要的对象
//构造函数
//自己传入对象,对象需包含属性:{
// Imgarr(对象数组)
// num(常量)
// 父级元素
//}样式请根据自己喜好在objSlide中修改,类名:上箭头:arow_prev,下箭头:arow_next,分页器:banner_nav
// 例:var obj = {
// Imgarr: ["./img2/i1.jpeg",
// "./img2/i2.jpeg",
// "./img2/i3.jpeg",
// "./img2/i4.jpeg",
// "./img2/i5.jpeg",
// "./img2/i6.jpeg"
// ],
// num: 0,
// bannerBox: document.getElementById("box1")
// }
function ChangeImg(obj) {
if(!obj) {
throw Error("请传入参数对象")
} else {
this.odiv = null;
this.spanleft = null;
this.spanright = null;
this.divban = null;
this.oul = null;
this.obj = obj;
//this.m=0;
this.init()
}
}
//执行函数
ChangeImg.prototype.init = function() {
var that = this;
this.createDiv();
this.createDivban();
this.createspanleft();
this.createspanright();
this.createIndexUl();
this.createIndexLi();
this.autoPlay();
$.addEvevt(this.spanright, "click", function() {
that.next();
}, false);
$.addEvevt(this.spanleft, "click", function() {
that.pre();
}, false);
$.addEvevt(this.divban, "mouseover", function() {
that.divban.classList.add("ban");
that.spanright.classList.remove("spanx");
that.spanleft.classList.remove("spanx");
that.clearAutoPlay();
}, false);
$.addEvevt(this.divban, "mouseout", function() {
this.classList.remove("ban");
$.addClass(that.spanright, "spanx");
$.addClass(that.spanleft, "spanx");
that.autoPlay();
}, false);
for(var i = 0; i < (this.obj.Imgarr).length; i++) {
this.xli[i].index = i;
this.xli[i].onmouseover = function() {
for(var i = 0; i < (that.obj.Imgarr).length; i++) {
that.xli[i].classList.remove("liActive");
}
that.obj.num = this.index;
this.classList.add("liActive");
that.odiv.style.backgroundImage = "url(" + that.obj.Imgarr[this.index] + " )";
}
}
};
ChangeImg.prototype.createDiv = function() {
var odivx = document.createElement("div");
odivx.classList.add("odivx");
odivx.style.backgroundImage = "url(" + this.obj.Imgarr[this.obj.num] + " )";
this.obj.bannerBox.appendChild(odivx);
this.odiv = odivx;
};
ChangeImg.prototype.createDivban = function() {
var divban = document.createElement("div");
divban.id = "bannerBox";
this.odiv.insertBefore(divban, this.spanleft); //父节点.insertBefore(要插入节点,插入这个节点之前)
this.divban = divban;
}
ChangeImg.prototype.createspanleft = function() {
var spanleft = document.createElement("span");
spanleft.classList.add("arow_prev");
spanleft.classList.add("spanx");
spanleft.style.cursor = "pointer";
this.divban.appendChild(spanleft);
this.spanleft = spanleft;
//alert(333);
};
ChangeImg.prototype.createspanright = function() {
var spanright = document.createElement("span");
spanright.classList.add("arow_next");
spanright.classList.add("spanx");
spanright.style.cursor = "pointer";
this.divban.appendChild(spanright); //加强绑定
this.spanright = spanright;
//alert(444);
}
ChangeImg.prototype.createIndexUl = function() {
var oul = document.createElement("ul");
oul.style.listStyle = "none";
oul.id = "ulx";
this.divban.appendChild(oul);
this.oul = oul;
//alert(555);
}
ChangeImg.prototype.createIndexLi = function(arr) {
for(i = 0; i < (this.obj.Imgarr).length; i++) {
var oLi = document.createElement("li");
oLi.style.cursor = "pointer";
this.oul.appendChild(oLi);
oLi.innerText = i + 1;
oLi.classList.add("banner_nav");
//alert(666);
}
this.xli = this.oul.getElementsByTagName("li");
}
ChangeImg.prototype.next = function() {
this.obj.num++; //在这里取到了构造函数里面的m
if(this.obj.num > (this.obj.Imgarr).length - 1) {
this.obj.num = 0
}
this.indexClear();
this.changeStyle();
}
ChangeImg.prototype.pre = function() {
this.obj.num--;
if(this.obj.num < 0) {
this.obj.num = (this.obj.Imgarr).length - 1;
}
this.indexClear();
this.changeStyle();
}
ChangeImg.prototype.autoPlay = function() {
var that = this;
this.timer = setInterval(function() {
that.next();
}, 2000)
}
ChangeImg.prototype.clearAutoPlay = function() {
clearInterval(this.timer);
//alert(22222);
}
ChangeImg.prototype.changeStyle = function() {
this.xli[this.obj.num].classList.add("liActive");
this.odiv.style.backgroundImage = "url(" + this.obj.Imgarr[this.obj.num] + " )";
}
ChangeImg.prototype.indexClear = function() {
for(i = 0; i < (this.obj.Imgarr).length; i++) {
this.xli[i].classList.remove("liActive");
}
}
var bx = new ChangeImg(obj);
仅有js文件,按所需传入对象即可,调试过程也有所保留,希望可以帮助到大家,整体组件可私信我,思维较为局限,仅供交流,有改进的地方还请指正,谢谢
原文:http://www.cnblogs.com/sxcflyhigher/p/6399517.html