iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
自我挑戰組

前端新手的學習筆記系列 第 27

Day27:每天一個小練習 - JS30-12-Key Sequence Detection

  • 分享至 

  • xImage
  •  

參考資料:
Alex老師教學
PJCHENder 未整理筆記
Day12_Key Sequence Detection

偵測按鍵序列。


先抓要放入畫面的節點

const text = document.querySelector('.text'); //輸入
const ans = document.querySelector('.ans');

預設密碼和建立裝輸入內容的容器

const secretCode = 'day12'; //密碼
let keyInput = []; //使用者輸入內容

監聽鍵盤動作

window.addEventListener('keyup', e => {
    console.log(e.key,e.keyCode ,e.code);
});

把輸入內容放入陣列,並進行篩選

    keyInput.push(e.key);
    if (keyInput.length > secretCode.length) {
        // 如果輸入的長度大於密碼長度
        keyInput.shift(); // 移除陣列第1個元素,位置0
        // keyInput.splice(0,1);//效果相同
    }

比對輸入內容和預設密碼就完成了

if (keyInput.join('').includes(secretCode)) {
        // join()把陣列轉為字串,用空字串表示不分隔
        // includes()判斷使否包含預設的secretCode
        // 輸入正確時顯示
        console.log('ok');
        ans.textContent = '猜對了';
    }

完整的code

const text = document.querySelector('.text'); //輸入
const ans = document.querySelector('.ans');

const secretCode = 'day12'; //密碼
let keyInput = []; //使用者輸入內容
window.addEventListener('keyup', e => {
    // console.log(e.key, e.keyCode, e.code);
    keyInput.push(e.key);
    if (keyInput.length > secretCode.length) {
        // 如果輸入的長度大於密碼長度
        keyInput.shift(); // 移除陣列第1個元素,位置0
        // keyInput.splice(0,1);//效果相同
    }
    console.log(keyInput); //確認輸入內容
    // text.textContent = keyInput.join('');
    if (keyInput.join('').includes(secretCode)) {
        // join()把陣列轉為字串,用空字串表示不分隔
        // includes()判斷使否包含預設的secretCode
        // 輸入正確時顯示
        console.log('ok');
        ans.textContent = '猜對了';
    }
    text.textContent = keyInput.join('');
});

連結


上一篇
Day26:每天一個小練習 - JS30-11-Custom Video Player
下一篇
Day28:每天一個小練習 - JS30-13-Slide in on Scroll
系列文
前端新手的學習筆記32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言