[JS] Day12 - KeySequence Detection
demo:
https://danji-ya.github.io/JS_javascript30/12-KeySequenceDetection/
Day12 - KeySequence Detection
🎯 기능 요구사항
- wesbos라는 단어가 완성되면 이벤트를 실행한다.
+
typing effect를 구현한다.
🚀 배운 점
splice의 Parameters
splice(start, deleteCount)
const checkKey = (function(){
const myArr = [];
const secretCode = 'wesbos';
return function(e){
myArr.push(e.key);
myArr.splice(-(secretCode.length + 1), myArr.length - secretCode.length);
if(myArr.join('').includes(secretCode)) {
console.log('Done...');
}
}
})();
key가 입력될 때마다 해당 함수가 실행되는데 이 때, 목표는 myArr내에 6개의 요소만 존재해야한다. 그렇기 때문에 splice함수의 첫번째 인자
로 secretCode.length + 1의 음수로 하여
항상 myArr의 배열의 첫번째 요소를 시작으로 하여 두번째 인자
로 잘라낼 길이만큼인데 이때 0 이하라면 어떤 요소도 제거하지 않는 특성을 이용하여 secretCode보다 길어지는 만큼만 잘라내기 때문에 계속 6개의 요소만 존재 할 수 있다.
Typing Effect
const typingText = (function(){
const typedTextSpan = document.querySelector(".typed-text");
const cursorSpan = document.querySelector(".cursor");
const textArr = ["Press Your Key..."];
const typingDelay = 200;
const erasingDelay = 100;
const endingDelay = 1000;
let textArrIdx = 0;
let charIdx = 0;
return {
typing: function(){
if(charIdx < textArr[textArrIdx].length){
if(!cursorSpan.classList.contains('typing')) cursorSpan.classList.add('typing');
typedTextSpan.textContent += textArr[textArrIdx].charAt(charIdx);
charIdx++;
setTimeout(typingText.typing, typingDelay);
} else {
// console.log('typing End...');
cursorSpan.classList.remove('typing');
// start erasing
setTimeout(typingText.erasing, endingDelay);
}
},
erasing: function() {
if(charIdx > 0) {
if(!cursorSpan.classList.contains('typing')) cursorSpan.classList.add('typing');
typedTextSpan.textContent = textArr[textArrIdx].substring(0, charIdx-1);
charIdx--;
setTimeout(typingText.erasing, erasingDelay);
} else {
// console.log('erasing End..');
cursorSpan.classList.remove('typing');
// restart
setTimeout(typingText.typing, endingDelay);
}
}
}
})();
Author And Source
이 문제에 관하여([JS] Day12 - KeySequence Detection), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jiseong/JS-Day12-KeySequence-Detection저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)