---
# System prepended metadata

title: 作業3 詐欺遊戲-釣魚網站

---

# 作業3 詐欺遊戲-釣魚網站





## 教學說明

### 倒數計時器
{%youtube W_5ER5hxGUA %}
#### JavaScript
```javascript=
$(function(){
    countTime();
});
function countTime(){
    var $el = $('#time__count'),
        time = 900;
    var interval = setInterval(function () {
        time--;
        var min = parseInt(time / 60),
            sec = time % 60;
        min = min < 10 ? '0' + min.toString() : min.toString();
        sec = sec < 10 ? '0' + sec.toString() : sec.toString();
        $el.text(min + ':' + sec);
        if (time <= 0) {
            $(".time_end").show();
            $(".time__box").hide();
            $('.time_end').find('span').html("此筆訂單已逾時，無法進行交易，請返回商店重新結帳");
            $('#time__count').html('00:00');
            //time = 5;
            //var $btn = $('#w01').find('.actionArea >.btn');
            //$btn.removeAttr('data-fancybox');
            //$btn.removeAttr('data-src');
            //$btn.attr('disabled', true);
            //$btn.css({ 'opacity': '.65', 'cursor':'not-allowed'});
            //$btn.click(function () {
            //    return false;
            //    //$(this).remove();
            //    //$('.time_end').html("此筆訂單已逾時，無法進行交易，請返回商店重新結帳");
            //})  
            //$btn.click(function () {         
                //$(this).remove();
                //$('.time_end').html("此筆訂單已逾時，無法進行交易，請返回商店重新結帳");
            //})  
            clearInterval(interval);
        }
    }, 1000);   
  }
```

> 網頁中的倒數計時器以 index.js 這個檔案來實作。
這段 JavaScript 程式碼負責設置並顯示倒數計時器，設置時間為 15 分鐘（即 900 秒）。在倒數計時期間，它會以每秒 1 次的速度更新時間，並在計時結束後顯示訂單已逾時的訊息。
> 
> 程式碼說明：
> 
> 1. 在網頁加載完成後，執行 countTime() 函數。
> 2. countTime() 函數設置計時器的初始值為 900（即 15 分鐘），然後每秒更新一次倒數計時器的值。
> 3. 在更新倒數計時器的值時，函數會檢查是否已經超過計時器的時間，如果是，則停止計時器，顯示訂單已逾時的訊息。
> 4. 在計時器結束後，它會停止計時器並清除 interval 變數，以避免計時器繼續運行。
> 5. 計時器結束後，會顯示一條訊息，指出此筆訂單已逾時，無法進行交易，並提示用戶返回商店重新結帳。

---

### 卡號輸入動畫
{%youtube AkuoUM32-iA %}
#### JavaScript
```javascript=
// 獲取信用卡卡號輸入框元素
const cardNumberInput = document.querySelector("#card-number-input");

// 當卡號輸入框的內容發生改變時，更新圖片上的卡號
cardNumberInput.addEventListener("keyup", function(event) {
  // 獲取卡號輸入框中的值
  const cardNumber = event.target.value;

  // 獲取卡號圖片元素
  const cardImage = document.querySelector(".card-image");

  // 在卡號圖片上顯示卡號
  cardImage.textContent = cardNumber;
});
```

> 程式碼說明：
> 
> 獲取了信用卡卡號輸入框的元素，然後添加了一個事件監聽器來監聽 keyup 事件。當使用者在信用卡卡號輸入框中輸入卡號時，keyup 事件會觸發。在事件處理函數中，獲取輸入框中的卡號值，然後獲取卡號圖片元素，並在卡號圖片上顯示卡號。



---

### 卡片翻轉動畫
{%youtube V1Bl1JoykWg %}
#### CSS
```css=
.card {
  /* 定義卡片樣式 */
  position: relative;
  width: 400px;
  height: 250px;
  transition: transform 0.5s;
  transform-style: preserve-3d;
}

.card:focus {
  /* 定義卡片翻轉樣式 */
  transform: rotateY(180deg);
}

.card-front, .card-back {
  /* 定義卡片正面和背面樣式 */
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
}

.card-front {
  /* 定義卡片正面內容樣式 */
}

.card-back {
  /* 定義卡片背面內容樣式 */
  transform: rotateY(180deg);
}
```
#### JavaScript
```javascript=
// 獲取信用卡卡號輸入框元素和卡片檢查碼輸入框元素
const cardNumberInput = document.querySelector("#card-number-input");
const cardCvcInput = document.querySelector("#card-cvc-input");

// 為信用卡卡號輸入框元素和卡片檢查碼輸入框元素綁定 focus 事件和 blur 事件
cardNumberInput.addEventListener("focus", function() {
  document.querySelector("#card").classList.add("focus");
});

cardNumberInput.addEventListener("blur", function() {
  document.querySelector("#card").classList.remove("focus");
});

cardCvcInput.addEventListener("focus", function() {
  document.querySelector("#card").classList.add("focus");
});

cardCvcInput.addEventListener("blur", function() {
  document.querySelector("#card").classList.remove("focus");
});

```

> 程式碼說明：
> 卡片翻轉動畫是使用 CSS3 的 transform 屬性實現的。當使用者在信用卡卡號輸入框或卡片檢查碼輸入框中點擊時，將會觸發 focus 事件，此時 JavaScript 會為卡片元素添加 focus class，該 class 中定義了 transform: rotateY(180deg) 的樣式，使卡片元素繞 Y 軸翻轉 180 度。當使用者離開輸入框時，將會觸發 blur 事件，此時 JavaScript 會刪除卡片元素的 focus class，卡片就會恢復原本的樣式。



## 自評自己的網站跟目標網站的差異
### 自己的網站
![](https://i.imgur.com/1Z9auYW.png)

### 目標的網站
![](https://i.imgur.com/uQNrCJg.png)

我認為差異並不大，主要差異在於我的網站不會儲存使用者所輸入的資料。