javascript如何製作簡單的圖片輪播,帶有數字選擇,滑鼠懸停暫停輪播,離開時繼續輪播圖片
阿新 • • 發佈:2019-01-07
直接上程式碼,程式碼有註釋:
要想做圖片輪播,需要知道以下知識點:
定時函式:
window物件:
window.setInterval("執行的方法名",間隔時間(毫秒)):返回值是一個用來停止計時器的ID
window.clearInterval(計時器的ID):清除定時器,無返回值
圖片輪播靠的是定時器,定時執行方法去切換圖片,切換 img標籤下的src屬性,以此來切換圖片,
滑鼠懸停時停止輪播,是依靠滑鼠懸停事件onmouseover和滑鼠移出事件onmouseout.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
//設定全域性變數,統計播放圖片的順序
var imgIndex=1;//從第一張圖片開始輪播
var imgCount=6;//總共有6張圖片
var liObjs=document.getElementById("scroll_number").getElementsByTagName("li");
/**
* 實現圖片輪播
* _args 傳入的是數字(第幾張圖片)滑鼠懸停時才會傳入引數
*/
function loopShow(_args){//當滑鼠移入時,執行滑鼠移入事件,執行帶引數的方法,引數值在index.html中的loopShow()方法中的引數傳入
if(_args){//如果引數存在,代表觸發了滑鼠懸停事件,那麼需要停止計時器
imgIndex=_args;
window.clearInterval(myTime);//停止定時器
}
//1、圖片輪播
var imgObj=document.getElementById("dd_scroll");
//1.1、設定顯示第幾張圖片
//1.2、設定數字的背景色(顯示的是第幾張圖片)
for(var i=0;i<liObjs.length;i++){
if(i==imgIndex-1){
//圖片的名字只有一個數字的區別,所以切換圖片只需要修改圖片名字的一個數字
imgObj.setAttribute("src","images/dd_scroll_"+imgIndex+".jpg");//圖片顯示
liObjs[i].className="scroll_number_over";//數字背景
}else{
liObjs[i].className="scroll_number_out";
}
/*新增移出事件,只能寫一個,寫在這裡或者onload事件裡面都一樣可以
liObjs[i].onmouseout=function(){
myTime=window.setInterval("loopShow()",1000);
}*/
}
//imgIndex++代表繼續顯示下一張圖片
imgIndex++;
if(imgIndex>imgCount) {//如果圖片編號大於中的圖片數量,就重新賦值為1,從第一張開始輪播
imgIndex=1;
}
}
var myTime;//全域性變數,用於記錄定時器的ID,便於在loopshow()方法中使用
window.onload=function(){
//設定定時器定時執行輪播,方法需要引數,就算不給引數也能執行.
myTime=window.setInterval("loopShow()",1000);
//新增移出事件,滑鼠移開數字
for(var i=0;i<liObjs.length;i++){
liObjs[i].onmouseout=function(){
myTime=window.setInterval("loopShow()",1000);//返回的myTime是一個用來停止計時器的ID
}
}
</script>
<style type="text/css">
.scroll_number_out{
}
.scroll_number_over{//設定數字的樣式,當滑鼠停在數字上時,給數字加點背景色和字型顏色.
background-color:#F96;
color:#FFF;
}
</style>
</head>
<body>
<!--輪換顯示的橫幅廣告圖片-->
<div class="scroll_top"></div>
<div class="scroll_mid"> <img src="images/dd_scroll_2.jpg" alt="輪換顯示的圖片廣告" id="dd_scroll"/>
<div id="scroll_number">
<ul><!--滑鼠懸停時才會觸發事件,傳入引數-->
<li id="scroll_number_1" onmouseover="loopShow(1)">1</li>
<li id="scroll_number_2" onmouseover="loopShow(2)">2</li>
<li id="scroll_number_3" onmouseover="loopShow(3)">3</li>
<li id="scroll_number_4" onmouseover="loopShow(4)">4</li>
<li id="scroll_number_5" onmouseover="loopShow(5)">5</li>
<li id="scroll_number_6" onmouseover="loopShow(6)">6</li>
</ul>
</div>
</div>
</body>
</html>