ex)
const maxNum=Math.max(77,5,4,9,30);
console.log(maxNum);
const minNum=Math.min(10,5,8,3,1);
console.log(minNum);
결과
77, 1
ex)
const num=2.1234;
소수점 계산을 위해 예제 -> 2.1234
ex)
const roundNum=Math.round(num);
console.log(roundNum);
결과
2
*2.1234 이므로 반올림이 되지 않는다.
ex)
const floorNum=Math.floor(num);
console.log(floorNum);
결과
2
*2.1234 에서 첫째자리에서 내림
ex)
const celiNum=Math.ceil(num);
console.log(celiNum);
결과
3
*2.1234 에서 첫째자리에서 무조건 올림
ex)
const rndNum=Math.random();
console.log(rndNum);
결과
0.066532305003562
0.39558027292593656 등 랜덤으로 나온다.
ex)
const piNum=Math.PI;
console.log(piNum);
결과
3.141592653589793
ex) 0부터 10까지 난수를 발생 (소수점 값을 제거하고 정수를 나타냄)
const rn=Math.floor(Math.random()*11);
console.log(rn);
결과
9,2,3 등 랜덤으로 0~10까지의 숫자가 나옴
ex) 120 부터 150까지 난수를 발생 (소수점 값을 제거하고 정수를 나타냄)
const rn1=Math.floor(Math.random()*31)+120
console.log(rn1);
결과
147,137,127,128 등 랜덤으로 120~150까지의 숫자가 나옴
일반적으로 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식.
클라이언트가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록, 일정한 패턴을 지닌 문자열을
생성해 내보내면 클라이언트는 그를 해석해 데이터를 자기만의 방식으로 온전히 저장, 표시할 수 있게 된다.
과거 웹 초기 시절부터 사용되어 온 XML은 헤더와 태그 등의 여러 요소로 가독성이 떨어지고,
쓸데없이 용량을 잡아먹는다는 단점이 항상 지적되어 왔다. 이에 대응해 간결하고 통일된 양식으로 각광을 받고 있는 것이 JSON이다.
ex)
let data={
"employee": [
{"firstName":"joo","lastName":"sehyeon"},
{"firstName":"kim","lastName":"sungsu"},
{"firstName":"seo","lastName":"suhyeon"},
{"firstName":"choi","lastName":"gwangil"}
]
}
console.log(data);
json 은 끝에 ',' 가 있으면 실행이 되지 않음
결과
object 객체란? 특정 기능을 수행하는 단위체
ex)
휴대폰.통화하기(); 메서드
휴대폰.색상; 속성
ex)
const today=new Date(); //현재 날짜
const nowDay=today.getDay(); //0~6(일,월,화,수,목,금,토)
if(nowDay==1){
console.log("월요일","<br/>");
}else if(nowDay==2){
console.log("화요일","<br/>");
}else if(nowDay==3){
console.log("수요일","<br/>");
}else if(nowDay==4){
console.log("목요일","<br/>");
}else if(nowDay==5){
console.log("금요일","<br/>");
}else if(nowDay==6){
console.log("토요일","<br/>");
} else{
console.log("일요일","<br/>");
}
결과
오늘은 금요일이다. 금요일로 나온다.
getDay는 (일,월,화,수,목,금,토) 순으로 나온다. 일요일부터 index 번호는 0이므로 0~6 까지 순으로 나열된다.
ex) 태어난 날짜
let today1=new Date(1991,11,18,11,30,11,11);
console.log("내가 태어난 날짜는",today1.getMonth(),"월",today1.getDate(),"일 입니다");
today1.setDate(20);
console.log("내가 태어난 날짜는",today1.getMonth(),"월",today1.getDate(),"일 입니다");
결과
내가 태어난 날짜는 11월 18일 입니다.
내가 태어난 날짜는 11월 20일 입니다.
ex) 2002년 월드컵
let birth=new Date("june 1, 2002"); //월드컵 경기
let birthtime=birth.getTime();
let todaytime=today.getTime();
let day=Math.ceil((todaytime-birthtime)/24/60/60/1000);
console.log("월드컵이 "+day+ "일 지났습니다.");
결과
월드컵이 7490일 지났습니다.
ex)
alert("경고창이야");
결과
브라우저 객체라서 브라우저에서 확인을 해야함 확인:true 취소:false 값을 가짐
ex)
let yesNo=confirm("정말 삭제하시겠습니까?")
console.log(yesNo);
결과
ex)
let txt=prompt("비밀번호가 뭐에요?","****")
if(txt==null){
console.log("정확한 값을 입력해 주세요")
}else if(txt==""){
console.log("값을 입력해 주세요")
}else if(txt!=""){
console.log(txt);
}
결과
null값이면 "정확한 값을 입력해 주세요" 라고 나오고
"" 값이면 "값을 입력해 주세요" 라고 나오고
그외의 값이라며 콘솔로 나온다.
ex)
setTimeout(function(){
console.log("2초후 실행")
},2000);
setTimeout 을 사용하면 콘솔창에서 2초뒤에 "2초후 실행" 이 나온다.
*2000=2초
ex)
let i=0;
let fnc=setInterval(function(){
console.log(i);
if(i==3){
clearInterval(fnc);
}
i++
},3000);
결과 3초마다 0에서부터 1씩 계속 증가한다.
결과
HTML
<div class="container">
<ul id="list1" class="list">
<li>li 1</li>
<li>li 2</li>
<li>li 3</li>
<li>li 4</li>
<li>li 5</li>
</ul>
</div>
<div class="container">
<ul id="list2" class="list">
<li>li 1</li>
<li>li 2</li>
<li>li 3</li>
<li>li 4</li>
<li>li 5</li>
</ul>
</div>
<div class="container">
<ul id="list3" class="list">
<li class="red">li 1</li>
<li>li 2</li>
<li>li 3</li>
<li id="list3_4">li 4</li>
<li>li 5</li>
</ul>
</div>
Script
const red=document.querySelector('.list .red');
red.style.color='blue';
querySelector를 통해 .list안에 li(클래스 .red)를 선택하여 css를 넣는다.
*똑같은 색상을 li전부에게 주고싶다면
for(let i=0; i<myList.length; i++){
myList[i].style.color='orange';
}
for문을 사용하여 i는 li의 갯수만큼 증가하여 orange컬러를 주게된다.
결과
결과
HTML
const paragraphs=document.getElementsByTagName('p')
paragraphs[0].style.color='red'
paragraphs[1].style.color='green'
for(let i=0; i<paragraphs.length; i++){
paragraphs[i].addEventListener('mouseover', function(){
paragraphs[i].style.color='orange';
});
paragraphs[i].addEventListener('mouseout', function(){
paragraphs[i].style.color='green';
});
}
getElementsByTagName
를 선언하고 태그'p'를 불러온다.
p의 갯수만큼 스타일이 적용되고 for문을 이용하여addEventListener
이벤트를 선언하여
hover
와 다르게mouseover
와mouseout
이 있다.
mouse event 종류
keydown, keypress, keyup 알아보기
keydown, keypress, keyup 이벤트 정의 keydown: 키보드를 누를 때 실행. 키를 누르고 있을 때 단 한번만 실행 keypress: 키보드를 누를 때 실행. 키를 누르고 있을 때 계속 실행 keyup: 누른 키에서 손을 뗄 때 실행 그렇다면, keydown과 keypress는 같은가? 이론적으로, keydown 이벤트는 눌리거나 해제된 키를 나타내고, keypress 이벤트는 입력 중인 문자를 나타낸다. 또한, keydown은 모든 문자를 인식하는 반면, keypress는 한글은 인식하지 않는다. 이벤트 발생 순서 키를 누르면 keydown 이벤트가 발생하며, 이어서 바로 keypress 이벤트가 발생한다. 그런 다음 키가 해제되면 keyup 이벤트가 생성된다. keydown > keypress > keyup 순으로 이벤트 진행
keydown
window.addEventListener('keydown',function(event){ console.log(event.key); console.log(event.keyCode); });
keyup (누르고 뗄때)
window.addEventListener('keyup',function(event){ console.log(event.key); console.log(event.keyCode); });
keypress
window.addEventListener('keypress',function(event){ console.log(event.key); console.log(event.keyCode); });
결과
HTML
<span>속성'title'의 값이'attr'인 엘리먼트의 색을 바꿔 주세요.</span>
<div>
1
<div>
1-1
</div>
</div>
<div>
2
<div>
2-1
<div>
2-1-1
<ul>
<li>2-1-1-1</li>
<li title="attr">2-1-1-2 ( 이부분을 고쳐주세요 )</li>
<li title="attr">2-1-1-3 ( 이부분을 고쳐주세요 )</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li>2-2-3</li>
<li>2-2-4</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
$(function(){
$('li[title="attr"]').css({color:'red'});
//$('li[title=attr]').css({color:'blue'}); //따옴표 없어도됨
});
결과
HTML
<div id="wrap">
<p>
<a href="http://cjh7652.dothome.co.kr/sRoom">hyunroom</a>
</p>
<p>
<a href="https://www.naver.com" target="_blank">naver</a>
</p>
<p>
<a href="https://www.daum.net" >daum</a>
</p>
<p>
<a href="https://www.google" >google</a>
</p>
<p>
<a href="https://www.nate.com" >nate</a>
</p>
<form action="#" method="post" id="menber_f">
<p>
<label for="user_id">아이디</label>
<input type="text" name="user_id" id="user_id"/>
</p>
<p>
<label for="user_pw">비밀번호</label>
<input type="password" name="user_pw" id="user_pw"/>
</p>
</form>
</div>
Script
$(function(){
$('a[target]').css({color:'red'});
$('a[href^=https]').css({color:'green'});
$('a[href$=net]').css({color:'blue'});
$('a[href*=google]').css({color:'purple'});
$('input[type=text]').css({color:'skyblue'});
$('input[type=password]').css({background:'gray'});
});
결과
HTML
<div id="wrap">
<div class="content">
<p>내용1</p>
<p style="display:none">내용2</p>
<p>내용3</p>
</div>
<form action="#">
<p id="zone1">
<select name="course" id="course">
<option value="opt1">옵션1</option>
<option value="opt2" selected>옵션2</option>
<option value="opt3">옵션3</option>
</select>
</p>
<p id="zone2">
<input type="checkbox" name="hobby1" value="독서"/> 독서
<input type="checkbox" name="hobby2" value="자전거"/> 자전거
<input type="checkbox" name="hobby3" value="등산" checked /> 등산
</p>
<p id="zone3">
<input type="radio" name="gender" value="male"/> 남성
<input type="radio" name="gender" value="female" checked /> 여성
</p>
</form>
</div>
Script
$(function(){
$('#wrap p:hidden').css({display:'block', background:'#ff0'});
let z1=$('#zone1 :selected').val();
console.log(z1);
let z2=$('#zone2 :checked').val();
console.log(z2);
let z3=$('#zone3 :checked').val();
console.log(z3);
});
결과
HTML
<span>아이디가 el인 엘리먼트의 자식엘리먼트중 :has 필터셀렉터를 이용하여 p태그를 포함하는 엘리먼트를 선택해 글자색을 변경해 주세요.</span>
<div>
<ul id="el">
<li>1</li>
<li>2</li>
<li>3</li>
<li><p>4</p></li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
</div>
Script
$(function(){
$('#el>li:has(p)').css({color:'red'});
$('#el>li').has('p').css({color:'red'});
});
결과
HTML
<span>ul의 자식 엘리먼트중 클래스값이 el인 엘리먼트만 글자색을 변경해 주세요.</span>
<div id="wrap">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="el">4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
Script
$(function(){
$('ul li').filter('.el').css({color:'red'});
});
결과
HTML
<span>아이디가 el인 엘리먼트의 자식엘리먼트중 class값이 not인 엘리먼트를 제외하여 선택해주고 선택된 엘리먼트의 글자색을 변경해 주세요.</span>
<div>
<ul id="el">
<li>1</li>
<li>2</li>
<li>3</li>
<li class="not">4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
</div>
<span>ul의 자식 엘리먼트중 클래스값이 el이 아닌 엘리먼트만 글자색을 변경해 주세요.</span>
<div id="wrap">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="el">4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
Script
$(function(){
$('#el li').not('.not').css({color:'red'});
$('#wrap li:not(.el)').css({color:'red'});
});
결과
HTML
<span>find() 메서드를 사용하여 id가 "el"인 엘리먼트를 찾아 색을 바꾸고 그안에 아이디가 "nextEl"인 엘리먼트를 찾아 색을 바꿔주세요.</span>
<div id="wrap">
<ul>
<li>1</li>
<li>2</li>
<li>3
<ul>
<li>3-1</li>
<li>3-2</li>
<li id="el">3-3 (먼저 이곳의 색을 바꿔 주세요.)
<ul>
<li>3-3-1</li>
<li>3-3-2</li>
<li id="nextEl">3-3-3 (그다음 이곳의 색을 바꿔 주세요.)</li>
<li>3-3-4</li>
<li>3-3-5</li>
</ul>
</li>
<li>3-4</li>
</ul>
</li>
<li>4
</li>
<li>5</li>
<li>6</li>
</ul>
</div>
Script
$(function(){
//방법1
/* let el=$('#wrap #el').css('color','blue')
el.find('#nextEl').css('color','red'); */
//방법2
$('#wrap #el').css('color','blue').find('#nextEl').css('color','red');
});
결과
HTML
<span>is() 메서드를 사용하여 id가 "el"인 엘리먼트의 확장집합중 id가 "nextEl"인 엘리먼트가 존재하는지 체크하고 존재한다면 alert창을 띄워주세요.</span>
<div id="wrap">
<ul>
<li>1</li>
<li>2</li>
<li>3
<ul>
<li>3-1</li>
<li>3-2</li>
<li id="el">3-3
<ul>
<li>3-3-1</li>
<li>3-3-2</li>
<li id="nextEl">3-3-3</li>
<li>3-3-4</li>
<li>3-3-5</li>
</ul>
</li>
<li>3-4</li>
</ul>
</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
Script
$(function(){
let el=$('#el>ul > li').is('#nextEl');
if(el==true){
alert('존재합니다.')
}else{
alert('존재하지 않습니다.')
}
});
결과
HTML
<span></span>
<div id="wrap">
<section id="inner_1">
<h5>contains(), contents()</h5>
<p>내용1</p>
<p>내용2</p>
<p>내용3</p>
</section>
<section id="inner_2">
<h5>end()</h5>
<p>내용4</p>
<p>내용5</p>
<p>내용6</p>
</section>
</div>
Script
$(function(){
$('#wrap #inner_1 p:contains(내용1)').css({color:'red'});
$('#wrap').contents().css('border','1px solid #f00');
$('#inner_2 p').eq(3).end().css('color','green');
});
결과
HTML
<body>
<div id="div1">안에 들어 있는 텍스트1</div>
<div id="div2">안에 들어 있는 텍스트2</div>
<div id="div3">안에 들어 있는 텍스트3</div>
<div id="div4">안에 들어 있는 텍스트4</div>
<div id="div5">안에 들어 있는 텍스트5</div>
</body>
Script
$(function(){
//.text("")는 내용이 비워진다.
let txt=$('#div1').text("text메소드에서 내용을 바꿉니다");
//.html은 dom을 조작해서 바꾸는것
$('#div2').html('html메소드에서 내용 바꾸기')
//.text와 .html 비교
$('#div3').text('<strong>text메소드</strong>')//<strong>을 그대로 문자로 출력된다.
$('#div4').html('<strong>text메소드</strong>')//<strong>을 활용되고 나머지 문자가 출력된다.
//hover 적용
$('#div5').hover(function(){$('#div5').html('<strong>text메소드</strong>')},function(){$('#div5').html('안에 들어 있는 텍스트5')})
console.log(txt);
});
.text로 하면
strong
의 태그도 텍스트로 인식하고 .html로 하면 태그가 적용된다.
결과
HTML
<body>
<img src="./img/img1.gif" alt="">
<img src="./img/img1.gif" alt="">
<img src="./img/img1.gif" alt="" class="changeThis">
<img src="./img/img1.gif" alt="">
</body>
Script
$('img').hover(function(){
$(this).attr('src','./img/img2.gif');
},function(){
$(this).attr('src','./img/img1.gif');
});
//mouseover <=> mouseout , mouseenter <=> mouseleave 대신 hover
hover하면 $(this).attr('src','./img/img2.gif'); 이 실행되고
hover하지 않으면 $(this).attr('src','./img/img1.gif'); 이 실행된다.
결과
HTML
<body>
<div id="div1">졸려?</div>
<div id="div2" class="box">졸지마</div>
<div id="div3" class="box">좀있음 쉬는 시간</div>
<div id="div4" class="box alert">좀만 버티면 집 가</div>
</body>
CSS
div{padding: 10px; margin-bottom: 10px;}
.box{border: 3px solid blue;}
.alert{border-color: #F00;}
Script
$('#div1').addClass('box');
$('#div2').removeClass('box');
$('#div3').addClass('alert');
$('#div4').removeClass('alert');
removeClass(.box)를 하면 border가 아예 사라지고, #div4 박스는 .box와 .alert가 동시에 적용이 되었고 removeClass(.alert)를 하면 빨간색 보더값만 제외된다.