= 하나의 명령어가 끝났음을 알림
자바스크립트는 유연해서 세미콜론 없어도 한줄이 각각의 명렬어로인식해서 정상적으로 동작한다.
: 컴퓨터는 읽을 수 없는 글
주석의 용도
// 주석을 쓰는 방법
/*
블
록형 주
석*/
var 변수명 = 값;
typeOf
로 알아볼 수 있음
var name = '수빈'
document.write(name);
// 수빈
document.write(typeof name);
// string
Math.random()
: 랜덤으로 실수형(float) 자료형이 추출됨
Math.random() * 45
: 1이상 45미만 실수 (float)
Math.random() * 45 +1
: 1이상 46 미만 실수 (float)
실수가 아닌 정수로 뽑아야 하기 때문에 Int
parseInt();
소수점은 버리고 정수로 반환해주는 함수
45까지의 수 중 하나를 뽑기 위한 코드
var num = Math.random() * 45 + 1;
var ball1 = parseInt(num);
45+1 을 해주는 이유는 46미만이라 딱 45가 되기 때문
Math.random()
(랜덤한 수)가 소수점까지 나타내기 때문에 paresInt 를 통해 정수로 변환해줘야한다.
var lotto = [1,2,3,4,5,6];
document.write(lotto[0]); // 1
document.write(lotto[1]); // 2
lotto.push(7); //[1,2,3,4,5,6,7]
var lotto = []; // 임의의 빈 배열
lotto.push(parsInt(Math.random() * 45 + 1));
lotto.push(parsInt(Math.random() * 45 + 1));
lotto.push(parsInt(Math.random() * 45 + 1));
lotto.push(parsInt(Math.random() * 45 + 1));
lotto.push(parsInt(Math.random() * 45 + 1));
lotto.push(parsInt(Math.random() * 45 + 1));
Dont Repeat Yourself
반복하지말라 !
반복문을 통해 저 비효율을 해결
위 코드는 i 가 0 부터 1씩 증가하다가 6보다 작을때 반복문이 끝내준다.
var lotto = [];
for (var i = 0; i < 6; i++){
lotto.push(parseInt(Math.random() * 45 + 1));
}
document.write(lotto);
while : 특정 조건까지 반복
var lotto = [];
while (lotto.length < 6) {
var num = parseInt(Math.random() * 45 + 1);
if (lotto.indexOf(num) == -1) {
lotto.push(num);
}
}
if(여기가 참이면) {
조건을 수행하라
}
값이 있으면 위치, 없으면 -1
var lotto = [];
for (var i = 0; i < 6; i++){
var num = parseInt(Math.random() * 45 + 1);
if (lotto.indexOf(num) == -1) {
lotto.push(num);
}
}
document.write(lotto);
조건 : lotto 배열 안에 이미 있는 num 이면 실행 안하고
배열 안에 없으면(indexOf가 -1 이면) push 해라 !
.sort((a,b) => a-b)
오름차순 정렬
<body class="container">
<h1>자기소개</h1>
<textarea class="form-control" rows="3" id="jasoseol">저는 인성 문제가 없습니다.</textarea>
<span id="count">(0/200)</span>
<script>
var content = document.getElementById('jasoseol').value;
document.getElementById('count').innerHTML = '(' + content.length + '/200)';
</script>
</body>
함수로 나타낸 코드
function counter() {
var content = document.getElementById('jasoseol').value;
document.getElementById('count').innerHTML = '(' + content.length + '/200)';
};
counter();
textarea 가 눌리면 숫자 update되는 event 를 넣어주기 위해
onkeydown
이벤트핸들러를 사용하여 counter() 함수를 불러옴
<textarea onkeydown='counter();' class="form-control" rows="3" id="jasoseol">저는 인성 문제가 없습니다.</textarea>
200자를 넘으면 더이상 불려오지지 않도록 기능을 넣어보자
=> ~ 하면 이니깐 조건문을 사용해야 한다!
.substring
200글자를 넘어가면 잘라주는 조건식
if (content.length > 200) {
content = content.substring(0,200);
}
function counter() {
var content = document.getElementById('jasoseol').value;
if (content.length > 200) {
content = content.substring(0,200);
document.getElementById('jasoseol').value = content;
}
document.getElementById('count').innerHTML = '(' + content.length + '/200)';
}
counter();
전체코드
<body class='container'>
<h1>자기소개</h1>
<textarea onkeydown="counter()" class="form-control" rows="3" id="jasoseol"></textarea>
<span id="count">(0/200)</span>
<script>
function counter(){
var content = document.getElementById('jasoseol').value;
if (content.length > 200){
content = content.substring(0,200);
document.getElementById('jasoseol').value = content;
}
document.getElementById('count').innerHTML = '('+ content.length + '/200)'
}
counter();
</script>
</body>
<body>
<h1>jQuery 기초</h1>
<textarea id="content">jQuery를 배워보자</textarea>
<script
src="https://code.jquery.com/jquery-3.5.1.js"
integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
crossorigin="anonymous"></script>
<script>
//document.getElementById('content').value 를 제이쿼리로 나타냄
console.log($('#content').val());
bu
</script>
</body>
제이쿼리로 작성한 클릭 이벤트
<h1>jQuery 이벤트</h1>
<button id="click">클릭</button>
<script
src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous"></script>
<script>
function hello() {
console.log('hello');
}
$('#click').click(hello);
</script>
이 과정을 좀 더 효율적으로 작성해보자
(따로 함수를 정의하고 호출하는 과정없이 없는 익명함수를 사용)
$('#click').click(function(){
console.log('hello');
});
drone 이 침을 뱉는 애니메이션을 제이쿼리를 이용해 만들어 보자 !
<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>
$('#drone').click(function(){
//침 나타나게 해주는 fadeIn()
$('#spit').fadeIn();
// 현재위치에서 left로 250px 이동하게 해주는 animate()
$('#spit').animate({left: '+=250'});
});
</script>
이제 뱉은 침을 faeOut 해주고 다시 드론의 위치로 옮겨보자
$('#drone').click(function(){
$('#spit').fadeIn();
$('#spit').animate({left: '+=250'});
$('#spit').fadeOut();
$('#spit').css({left: '150px'});
});
침에 맞으면 벙커의 HP 가 줄어들게 만들자
클릭했을 때 말고 벙커가 맞았을 때 hp를 - 해주는 것까지. (콜백함수 이용 [ 함수가 끝난 다음에 동작하는 함수]
<script>
var hp = 3;
$('#drone').click(function(){
$('#spit').fadeIn();
$('#spit').animate({left: '+=250'});
// fadeOut 이 끝난 시점에 hp-1 이 실행되도록 콜백함수
$('#spit').fadeOut(function(){
hp = hp - 1;
$('#hp').text('HP :' + hp);
});
$('#spit').css({left: '150px'});
});
</script>
벙커의 HP 가 0이 되면 사라지게 만들어 보자
$('#spit').fadeOut(function(){
hp = hp - 1;
$('#hp').text('HP: ' + hp);
// 조건문을 활용하여 0 이되면 fadeOut이 되게 해줬다!
if(hp == 0){
$('#bunker').fadeOut();
}
});
사라진 벙커 ,,
모든 코드를 정리해보자면 !
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});
});
<body>
<h1>객체(Object)</h1>
<script>
var person = {
name: 'susu',
sayHello: function() { console.log('hello'); }
}
console.log(person.name); //susu
person.sayHello(); //hello
</script>
</body>
//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 christmas = new Date('2020-12-25');
console.log(christmas);
//7. 특정 ms의 Date 객체 생성
var ms = new Date(1000);
console.log(ms);
위 이미지를 코드로 작성해보면
<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>