為什么老師用settimeout函數(shù)而不用setinterval?為什么setinterval函數(shù)里面參數(shù)值有變化
在動(dòng)畫(huà)函數(shù)那里感覺(jué)用setinterval也行,但是很奇怪的是我用setinterval來(lái)寫(xiě)里面一些參數(shù)值會(huì)發(fā)生變化;比如說(shuō)我setinterval函數(shù)寫(xiě)在前面,后面寫(xiě)了句index=end(所點(diǎn)擊的小圓點(diǎn)的index),setinterval函數(shù)里面有用到index的值,但是函數(shù)里面的index值會(huì)突變?yōu)閑nd的值。。。。
2016-08-12
window.onload = function() {
index=1;//當(dāng)前頁(yè)碼
len=5;//圖片張數(shù)
btn = document.getElementsByTagName("span");//獲得眾多小圓點(diǎn)元素
document.getElementsByTagName("span")[0].className="active";//設(shè)置第一個(gè)小圓點(diǎn)樣式為active
for(var i = 0; i < len; i++) {
btn[i].onclick = function() {
if(this.className=="active"){//如果摁了當(dāng)前頁(yè)面的小圓點(diǎn),就不執(zhí)行下面的函數(shù)
return;//不能用break;
}
//獲得摁的是第幾個(gè)小圓點(diǎn)
pointNum=parseInt(this.getAttribute("index"));//一定要加parseInt
offset=-669*(pointNum-index);//計(jì)算位移
function slidepage(offset){//滑動(dòng)動(dòng)畫(huà)
n =1;
img = document.getElementsByClassName("content")[0];
end=parseInt(img.style.marginTop)+offset;//計(jì)算終點(diǎn)
speed=offset/3;
? ? ?setInterval("go(index,pointNum,speed)",40);
? ? ? ??
? ?if(end<-6*669){//如果終點(diǎn)在第6張圖片,就返回第1張圖片
? ?img.style.marginTop=-669+"px";
? ? ? ?}
}
slidepage(offset);
showbutton(pointNum);
}
}
?
}
function showbutton(num){//小圓點(diǎn)的顏色變化
for(var i=0;i<len;i++){
if(btn[i].className=="active"){//清除有active樣式的小圓點(diǎn)的樣式
btn[i].className="";
break;
}
}
index=num;
btn[index-1].className="active";//給當(dāng)前小圓點(diǎn)添加active樣式
}
function go(index,pointNum,speed){
if(n == 3*(pointNum-index)) {
clearInterval();
}
img.style.marginTop=parseInt(img.style.marginTop)+speed+"px";
n++;
}