랜덤으로 6자리의 수 뽑고 오름차순 정렬 (1~45)
<body> <h1>로또 번호 추첨기</h1> <script> var lotto = [] ; while(lotto.length < 6 ) { var num = parseInt(Math.random() * 45 + 1 ) if(lotto.indexOf(num) == -1) { lotto.push(num) } } lotto.sort((a,b)=> a-b) document.write(lotto) </script> </body>
핵심 메서드
- 반복문
while
은 조건이 만족될 때 까지 실행한다parseInt
: 실수에서 소수점 떼고 정수만 남기기Math.random()
: 1~10 까지의 랜덤한 실수 추출 (로또는 1 ~ 45 숫자이므로 * 45 하고 0이 나오면 안되니까 +1 해준 것.indexOf()
: 배열에 해당 요소가 있는지 (없으면 -1 출력된다는 점을 이용하여 if문의 조건으로 활용하기) 중복숫자 나오기 방지.push()
: 배열 마지막에 요소 추가하기sort
: 오름차순 정렬 but 그냥 sort 만 사용하면 사전순으로 정렬되기 때문에 1 11 2 22 이런식으로 정렬됨. 때문에 찐오름차순으로 정렬하기 위해서는sort((a,b)=> a-b)
이렇게 해야한다
글자수를 세어주고 글자수가 100자가 넘어가면 입력되지 않도록 함
<body class='container'> <h1>자기소개</h1> <textarea onkeydown="counter()" class="form-control" rows="3" id="jasoseol"> </textarea> <span id="count">(0/100)</span> <script> function counter(){ var content = document.getElementById('jasoseol').value if(content.length > 100){ content = content.substring(0,100); document.getElementById('jasoseol').value = content; } document.getElementById('count').innerHTML = "(" + content.length + '/100)' } counter(); </script>
핵심 코드
document.getElementById('id').value
: html코드 상 id 값 추출요소.substring(start,end)
: start 이상 end 미만 만큼 자른다onkeydown='이벤트핸들러'()
: key를 누를 때 마다 이벤트핸들러 실행
드론 클릭하면 침 나오고 hp 줄어들면 벙커 사라지는... 제이쿼리...
<body> <h1 id='hp'>HP: 3</h1> <div class='background'> <img id='drone' src="drone.png" alt="drone"> <img id='spit' src="spit.png" alt="spit"> <img id='bunker' src="bunker.png" alt="bunker"> </div> <script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script> <script> var hp = 3; $('#drone').click(function() { $('#spit').fadeIn(); $('#spit').animate({'left': '+=250px'}); $('#spit').fadeOut(function(){ hp = hp - 1; $('#hp').text('HP: ' + hp); if (hp == 0) { $('#bunker').fadeOut(); } }); $('#spit').css({left: 150}); }); </script> </body> </html>
의 body 태그만...
핵심 코드
- 제이쿼리로 아이디값 부르기
$('#id')
$('#id')
뒤에.click
,.fadeIn
,.fadeOut
,.text
,.css
,.animate
등 다양한 메서드 사용 가능- 익명함수 : 일회성 함수일 경우 제이쿼리 메서드 안에서 함수 선언이 가능하다
$('#spit').fadeOut(function(){ hp = hp - 1; $('#hp').text('HP: ' + hp); if (hp == 0) { $('#bunker').fadeOut(); } });
이부분
기념일 계산 제이쿼리 사용..
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script> var now = new Date(); var start = new Date('2020-06-30'); //우리 몇 일째? var timeDiff = now.getTime() - start.getTime(); var day = Math.floor(timeDiff / (1000 * 60 * 60 * 24) + 1); $('#love').text(day + '일째'); //기념일까지 남은 날짜는? var valentine = new Date('2021-02-14'); var timeDiff2 = valentine.getTime() - now.getTime(); var day2 = Math.floor(timeDiff2 / (1000 * 60 * 60 * 24) + 1); $('#valentine').text(day2 + '일 남음'); //천일은 언제인가? var thousand = new Date(start.getTime() + 999 * (1000 * 60 * 60 * 24)); var thousandDate = thousand.getFullYear() + '.' + (thousand.getMonth()+1) + '.' + thousand.getDate(); $('#thousand-date').text(thousandDate); //기념일까지 남은 날짜는? var timeDiff3 = thousand.getTime() - now.getTime(); var day3 = Math.floor(timeDiff3 / (1000 * 60 * 60 * 24) + 1); $('#thousand').text(day3 + '일 남음'); </script>
핵심 코드
let now = new Date();
현재 날짜의 ms 추출 ()안에 해당 날짜 넣으면 그 날짜까지의 ms 추출하는 새로운 객체 생성getTime()
: 주어진 일시와 1970년 1월 1일 00시 00분 00초 사이의 간격(밀리초 단위)인 타임스탬프를 반환합니다.var timeDiff = now.getTime() - start.getTime(); var day = Math.floor(timeDiff / (1000 * 60 * 60 * 24) + 1);
해야 시작날짜부터 오늘까지의 일수 구할 수 있다. ms이기 때문에 1000 3600 24 를 해주고 그 값을 나눠줘야 한다- 그 외 천일은 언제인지 특정 날짜까지 남은 날짜는 언제인지 등은 원리는 같고 메서드와 계산만 야간 다르게 해주면 된다
date 메서드
// 1. Date 객체 생성 var now = new Date(); // 2. 연도를 가져오는 메소드 .getFullYear() console.log(now.getFullYear()); // 3. 월 정보를 가져오는 메소드 .getMonth() {0: 1월, 1: 2월, ... 10: 11월, 11: 12월} console.log(now.getMonth()); // 4. 일 정보를 가져오는 메소드 .getDate() console.log(now.getDate()); // 5. 1970년 1월 1일 00:00:00을 기준으로 흐른 시간을 밀리초로 표시하는 메서드 .getTime() console.log(now.getTime()); // 6. 특정일의 Date 객체 생성 var today = new Date('2022-04-15'); console.log(today); // 7. 특정 ms의 Date 객체 생성 var ms = new Date(1000); console.log(ms);
진짜 일단 만드는 자바스크립트였던 것 같다. 뭔가 이론을 먼저 배우는 것이 아니라 이걸 하려면 이걸 쓰면 돼~ 하는 식이라서 디립다 하는 느낌이 있지만 그래도 처음 할 때 흥미를 느낄 수 있는 프로젝트 위주로 자바스크립트 기초 문법을 체험할 수 있었다. 그리고 간단하다 간단하다 해도 막상 하려고 하면 좀 머리를 굴렸어야 했을 것 같아서,, 이렇게 정리를 해놓고 나중에 다시 공부해야 겠다.
아 그리고 제이쿼리는 처음 써봤는데 확실히 왜 아직까지 쓰는 라이브러리인지는 알겠다.. 이제 거의 사라지는 추세라고는 하지만 맨날 getElementById로 가져와서 일일이 동작시키는거 귀찮았는데 편하긴 하네... 이걸 먼저 배웠으면 바닐라js 문법 귀찮아서 계속 제이쿼리로 썼을 것 같음,, 일단 알아두면 좋을 것 같으니 기억해두어야지!
지현님 아직 mbti 페이지 안하셨나요?.. 저는 손도 못댔습니다 😅 얼른 복습하고 해야하는데 밀리고 또 밀리네요 ㅜㅜ 특강 고생하셨습니다!