오늘은 랜덤한 숫자값을 맞추는 간단한 게임을 만들어 보았다 :)
See the Pen Untitled by IT배움터 (@gfifvcbf-the-typescripter) on CodePen.
let count = 0; //사용자가 몇 번만에 맞췄는지 나타낼 변수다, 초기값은 0 let alertDiv = document.querySelector('.text_box') //사용자가 정답을 맞추거나 틀렸을 경우 문구를 띄울 장소를 가져오기 let inputNumber = document.querySelector('input') //사용자가 입력한 값을 받아오기 위해 input 태그를 들고오기 inputNumber.id = Math.floor(Math.random() * 100) + 1 //여기서 랜덤 값을 input의 아이디에 저장하기로 했다. 굳이 id에 줄 필요는 없고 따로 변수를 만들어 그 곳에 저장해도 똑같은 결과가 나올 것이다... (기능을 좀 더 다양하게 써보기 위해 input태그의 id 공간에 넣기로 했을 뿐) let randomId = inputNumber.getAttribute("id") //랜덤하게 바뀐 input 태그의 ID를 가져와서 변수에 저장했다. //문자열로 저장되기 때문에 숫자로 바꿔줘야 한다. let nBtu = document.querySelector('button') nBtu.addEventListener('click', numberAnswer) //사용자가 버튼을 눌렀을 때 기능이 실행되도록 한다 function numberAnswer() { let userA = Number(inputNumber.value) //input태그에 받아온 값을 지역변수로 선언 //input태그에 담기는 값은 문자열이기 때문에 숫자로 바꿔주는 작업이 필요하다. if (userA > 0 && userA < 101) { if (userA == randomId) { count++ //사용자가 시도한 횟수 만큼 count 값을 증가시키기 때문에 모든 조건문에 붙는다. alertDiv.innerHTML = `정답입니다! ${count}번 만에 맞추셨습니다!` inputNumber.id = Math.floor(Math.random() * 100) + 1 randomId = inputNumber.getAttribute("id") //정답을 맞춘 후, 기존 변수를 재선언함으로써 새로운 랜덤값이 생성된다. inputNumber.value = "" //사용자가 입력한 값을 없앤다. count = 0; //정답을 맞췄기 때문에 시도횟수는 초기화 } else if (userA > randomId) { count++ alertDiv.innerHTML = `입력한 값 ${userA}보다 낮은 숫자입니다. 다시 시도해보세요.` inputNumber.value = "" } else if (userA < randomId) { count++ alertDiv.innerHTML = `입력한 값 ${userA}보다 높은 숫자입니다. 다시 시도해보세요.` inputNumber.value = "" } } else { alertDiv.innerHTML = `1~100 사이의 숫자를 입력해주세요.` //앞서 사용자가 1~100까지의 숫자를 입력했는지 확인하고 아닐시 else문을 실행한다. } } |
한 글자만 맞아도 검색 목록에 뜨는 화면을 만들어보자.
See the Pen Untitled by IT배움터 (@gfifvcbf-the-typescripter) on CodePen.
let item = [ ]; //아이템들을 담을 변수 선언 let itemList = document.querySelectorAll('#itemList > li') let itemSearch = document.querySelector('input') itemSearch.addEventListener('input', itemValue) //input = form 요소의 값이 변경될 때마다 이벤트 발생 for (let i = 0; i < itemList.length; i++) { item.push(itemList[i].innerHTML) //배열변수에 li태그가 가지고 있는 텍스트 이름을 모두 저장 } function itemValue() { for(let i=0; i<item.length; i++){ let itemCode = String(item[i]) let userSerach = String(itemSearch.value) //includes = 해당 문자열이 포함이 되어 있을 경우 true를 반환 if(itemCode.includes(userSerach)){ itemList[i].style.display = "block" } else{ itemList[i].style.display = "none" } } } |
let itemList = document.querySelectorAll('#itemList > li') let itemSearch = document.querySelector('input') //keyup = 키보드를 누를 때마다 이벤트 발생 itemSearch.addEventListener('keyup', function(){ let itemText = itemSearch.value; //지역변수에 input태그에서 받아온 값을 키보드를 누를때마다 저장 itemList.forEach(function(array){ let listText = array.textContent; //textContent = 요소가 가지고 있는 텍스트를 가져옴 //indexOf = 해당 문자열을 가지고 있을 경우 해당 위치의 인덱스 반환, 없으면 -1을 반환함 if(listText.indexOf(itemText) !== -1){ array.style.display = "block" } else { array.style.display = "none" } }) //indexOf로 반환받은 숫자가 양수면 해당 li태그를 block 처리, 음수면 none처리 }) |
'아이티에듀넷' 카테고리의 다른 글
2024-09-02 :: 029 Java Script 활용 ⑥ (0) | 2024.09.02 |
---|---|
2024-08-30 :: 028 Java Script 활용 평가 (0) | 2024.08.30 |
2024-08-28 :: 026 Java Script 활용 ④ (0) | 2024.08.28 |
2024-08-27 :: 025 HTML / CSS / JS 참고용 포스트 (0) | 2024.08.27 |
2024-08-26 :: 024 Java Script 활용 ③ (0) | 2024.08.26 |