0%

[技能檢定]題組一 步驟19 完成校園映像檔輪播功能

版型檔案己經有提供了js程式來做圖片輪播的功能,不過程式本身有點小BUG,最後三張圖片有可能不會出現,這個問題可修可不修,現場評核時只看功能有沒有做出來,不會去驗證程式的小問題,所以我們要做的就是把圖片讀出來,然後讓JS程式去控制要顯示那幾張圖片。

內建程式的原理是先把圖片都讀出來後,都先設為隱藏,然後只顯示三張圖片,之後當點擊上下按鈕時,再去計算現在在第幾頁的位置,依此算出畫面上應該出現那三張圖片。

在讀出圖片時,需要在HTML的標籤中加入id序號來為每張圖片做記號,程式會去計算要顯示的圖片id,然後再使用 jQuery 的 $(id).show() 來讓圖片顯示出來。

內建程式問題出在計算當前頁的公式上,只要修改一下計算方式就可以正常輪播全部的圖片了。

IMAGE-前台校園映像資料圖片輪播區

版型提供的js程式,需要知道全部的圖片有幾張,因此我們在類別中建立一個方法來回傳圖片的數量

1
2
3
4
//計算設為顯示的圖片有幾張
function num(){
return $this->count(['sh'=>1]);
}

接著我們在類別中再建立一個方法用來回傳每張圖片顯示在畫面上時的html碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function show(){

//取得全部設為顯示的圖片
$rows=$this->all(['sh'=>1]);

//利用迴圈來讀出圖檔名稱,並放置在html中對應的地方
foreach($rows as $idx => $row){
?>
<div class="im" id="ssaa<?=$idx;?>">
<!--根據題目規定,每張圖片為150px * 103px-->
<img src="./upload/<?=$row['img'];?>" style="width:150px;height:103px;border:3px solid orange;margin:2px">
</div>

<?php
}
}

在類別中建立完相關的方法後,就可以在頁面對應的位置來顯示圖片或資料

index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div style="width:89%; height:480px;" class="dbor">
<span class="t botli">校園映象區</span>
<!--建立一個div來放置向上icon,並註冊點擊時的動作-->
<div class='cent' onclick="pp(1)">
<img src="./icon/up.jpg" alt="">
</div>

<!--執行物件中的show()方法來印出所有圖片的html碼-->
<?php $Image->show();?>

<!--建立一個div來放置向下icon,並註冊點擊時的動作-->
<div class='cent' onclick="pp(2)">
<img src="./icon/dn.jpg" alt="">
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var nowpage = 0,

/**
* num 變數是用來紀錄有多少張圖片要顯示用的,
* 因此我們直接執行物件中的num()方法來顯示數量,
* 記得在PHP的標籤最後要加上;號,用來表示這一行js結束
*/
num = <?=$Image->num();?>;

function pp(x) {
var s, t;
if (x == 1 && nowpage - 1 >= 0) {
nowpage--;
}

//原本的js程式在向下輪播的判斷式中有錯,
//將程式內容改成如下,才會正常輪播
if (x == 2 && nowpage < (num - 3) ) {
nowpage++;
}

//先將所有的.im元素都隱藏起來
$(".im").hide()

//使用迴圈依據nowpage的值來決定那三張圖片要顯示
for (s = 0; s <= 2; s++) {
t = s * 1 + nowpage * 1;
$("#ssaa" + t).show()
}
}

//先執行一次pp(1)的目的是要先把所有的圖片隱藏,並顯示最初的3張圖片
pp(1)