
作品網址:
主題目標
- 要對照 Console 才能觀看,主要是偵測輸入按鍵,一開始設定一組密碼,例如: wesbos ,當輸入的內容符合到 wesbos 就顯示提示。
- 初始文檔裡僅僅提供了一個script標籤,供我們從Cornify.com加載一個JS文件,調用其中的cornify_add()方法時,會在頁面中追加p標籤,並在DOM中插入一個圖標。Cornify的具體效果可以到官網首頁去體驗。
需求思考分析
- 指定可激發特效的字符串
- 監聽並獲取輸入的字符
- 處理輸入,在符合條件時,調用cornify
處理步驟
步驟1
聲明一個空數組,用於存放的輸入字符,同時聲明“暗號”
步驟2
- 添加鍵盤的keyup事件監聽,用箭頭函數的參數來接收事件。
- 注意此處的keyup事件是針對頁面的,所以在調試時單擊頁面後時焦點在頁面中才生效,在Console面板中是不會觸發的。
步驟3
- 驗證輸入的字符。
- 此處方法是將每一個輸入的字符存入pressed數組,然後處理數組,使其呈現隊列的性質,也就是輸入一個字符時,會擠出原有的的字符,保證其最大長度始終為secretCode的長度。
- 這樣做的目的是為了便於驗證暗號,只有完整無誤的輸入一次暗號時,才會觸發相應的效果。當然這只是其中一種處理辦法,也還有其他辦法。
特別技術、函式
<HTML>
<CSS>
<JavaScript>
Array.prototype.splice()
splice() 方法可以藉由刪除既有元素並/或加入新元素來改變一個陣列的內容。
const months = ['Jan', 'March', 'April', 'June']; months.splice(1, 0, 'Feb'); // inserts at index 1 console.log(months); // expected output: Array ["Jan", "Feb", "March", "April", "June"] months.splice(4, 1, 'May'); // replaces 1 element at index 4 console.log(months); // expected output: Array ["Jan", "Feb", "March", "April", "May"]
Array.prototype.shift()
shift() 方法會移除並回傳陣列的第一個元素。此方法會改變陣列的長度。
const array1 = [1, 2, 3]; const firstElement = array1.shift(); console.log(array1); // expected output: Array [2, 3] console.log(firstElement); // expected output: 1
Array.prototype.join()
join() 方法會將陣列(或一個類陣列(array-like)物件)中所有的元素連接、合併成一個字串,並回傳此字串。
const elements = ['Fire', 'Air', 'Water']; console.log(elements.join()); // expected output: "Fire,Air,Water" console.log(elements.join('')); // expected output: "FireAirWater" console.log(elements.join('-')); // expected output: "Fire-Air-Water"
參考資料:
JS30紀錄 12-Key Sequence Detection: https://shunnien.github.io/2017/12/30/Javascript30days-12/
Js 30 day 中文指南:https://github.com/soyaine/JavaScript30