함수의 중급기법
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>함수의 중급기법</title>
<script>
function myFunc(num){
console.log("myFunc 호출됨.");
console.log(num);
}
myFunc(10);
let funcVar = function(){
console.log("funcVar 호출됨.");
};
funcVar();
let funcVar2 = function(param){
console.log("funcVar2 호출됨.");
return param + "!!";
};
let result = funcVar2("자바스크립트");
console.log(result);
let funcVar3 = (param) => {
console.log("funVar3 호출됨.");
return param + "##";
};
let result2 = funcVar3("ECMA Script");
console.log(result);
function sum(param1, param2, method){
return method(param1, param2);
}
let sumFunc = (a,b) => {
return a + b;
};
console.log(sum(10,20,sumFunc));
let funcMax = (p1, p2) => {
if(p1 > p2)
return p1;
else
return p2;
};
function max(p1,p2,method){
return method(p1,p2);
}
console.log(max(10,20,funcMax));
</script>
</head>
<body>
</body>
</html>
타이머 관련 함수
<!DOCTYPE html>
<html lang="en">
<head>
<title>타이머 관련 함수</title>
<script>
let timer = setTimeout(() => {
console.log("setTimer호출됨.");
}, 3000);
clearTimeout(timer);
let interval = setInterval(() => {
console.log(new Date().toTimeString().split(' ')[0]);
console.log(new Date().toISOString().split('T')[0]);
}, 1000);
clearInterval(interval);
</script>
</head>
<body>
</body>
</html>
Key-Value 객체
<!DOCTYPE html>
<html lang="en">
<head>
<title>key-value객체</title>
<script>
let keyValue = {
apple: 1000,
banana: 2000,
pear: 3000
};
console.log(keyValue['apple']);
console.log(keyValue.apple);
let person = {
name: '홍길동',
action: () => { console.log("야호~"); }
}
console.log(person.name);
person.action();
let student = {
kor: 70,
eng: 80,
math: 90,
sum : (a, b, c) => {return a + b + c},
avr : (a, b, c) => {return (a+b+c)/3}
};
console.log("국어 : " + student.kor + " 영어 : " + student.eng + " 수학 : " + student.math);
console.log("합계 : " + student.sum(student.kor, student.eng, student.math));
console.log("평균 : " + student.avr(student.kor, student.eng, student.math));
</script>
</head>
<body>
</body>
</html>
구조분해할당과 전개연산자
<!DOCTYPE html>
<html lang="en">
<head>
<title>ES6 최신문법 - 구조분해할당과 전개연산자</title>
<script>
let array1 = [10, 20, 30];
console.log(array1);
console.log(array1[0]);
let [a,b,c] = [10,20,30];
console.log(a);
console.log(b);
console.log(c);
let [x, y, ...rest] = [10,20,30,40,50];
console.log(x);
console.log(y);
console.log(rest);
let [i,j] = [10,20];
console.log(i);
console.log(j);
let temp = 0;
temp = i;
i = j;
j = temp;
[i,j] = [j,i];
console.log(i);
console.log(j);
let obj = {
apple : 1000,
banana : 2000
};
let { apple, banana } = obj;
console.log(apple);
console.log(banana);
let {apple:f1, banana:f2} = obj;
console.log(f1);
console.log(f2);
let {apple:newFruit} = obj;
console.log(newFruit);
let pet = {
cat : 1000,
dog : 2000,
pig : 3000
}
let ball = {
baseball : 1000,
soccer : 2000,
basketball : 3000
}
let favorite = {
...pet,
...ball
}
console.log(favorite);
</script>
</head>
<body>
</body>
</html>
map 함수
<!DOCTYPE html>
<html lang="en">
<head>
<title>map함수</title>
<script>
let arr = [10,20,30,40,50];
for(let i=0; i < arr.length; i++){
console.log(arr[i]);
}
for(let item of arr){
console.log(item);
}
arr.forEach((value,index,array) => {
console.log(value);
console.log(index);
console.log(array);
});
arr.map((item,index,array) =>{
console.log(item);
console.log(index);
console.log(array);
});
let sqrt = arr.map(Math.sqrt);
console.log(sqrt);
let strings = arr.map(String);
console.log(strings);
let nums = strings.map(Number);
console.log(nums);
let doubles = nums.map((item)=>{return item * 2;});
console.log(doubles);
let doubles2 = nums.map((item)=>{number => number * 2;});
console.log(doubles2);
let students = [
{id : 1, name : "hong"},
{id : 2, name : "lee"},
{id : 3, name : "jung"},
{id : 4, name : "kim"},
];
let names = students.map(student => student.name);
console.log(names);
</script>
</head>
<body>
</body>
</html>
reduce 함수
<!DOCTYPE html>
<html lang="en">
<head>
<title>reduce 함수</title>
<script>
let nums = [10, 20, 30, 40, 50];
let sum = nums.reduce((acc, cur) => {
console.log(acc, cur);
return acc + cur;
});
console.log(sum);
sum = nums.reduce((acc, cur, index, arr) => {
console.log(acc, cur, index, arr);
return acc + cur;
}, 0);
let max = nums.reduce((acc, cur) => {
return acc > cur ? acc : cur;
});
console.log(max);
const alphabets = ['a', 'a', 'c', 'c', 'c'];
let count = alphabets.reduce(
(acc, cur) => {
if (acc[cur]) {
acc[cur] += 1;
} else {
acc[cur] = 1;
}
return acc;
},
{}
)
console.log(count);
let nums_list = [10, 20, 30, 40, 50];
let num_count = nums_list.reduce((acc, cur) => {
if (cur > 35) {
acc += 1;
}
return acc;
}, 0);
console.log(num_count);
let string_list = ['hong', 'kim', 'choi'];
let arrlength = string_list.reduce((acc, cur) => {
acc.push(cur.length);
return acc;
},[ ]);
console.log(arrlength);
</script>
</head>
<body>
</body>
</html>
find / filter함수
<!DOCTYPE html>
<html lang="en">
<head>
<title>find, filter함수</title>
<script>
let nums = [10,20,30,40,50];
let arrFilter = nums.filter((item,index,array) =>{
console.log(item);
console.log(index);
console.log(array);
return item < 35;
});
console.log(arrFilter);
let foundVal = nums.find((item,index,array) => {
console.log(item);
console.log(index);
console.log(array);
return item < 35;
});
console.log(foundVal);
</script>
</head>
<body>
</body>
</html>
JGS로 HTML문서 조작하기
<!DOCTYPE html>
<html lang="en">
<head>
<title>JGS로 HTML문서 조작하기</title>
<script>
window.open();
window.open("http://www.naver.com");
window.open("http://www.google.com", "자식창","width=600","height=300");
</script>
</head>
<body>
</body>
</html>
페이지 이동 - 리다이렉션
<!DOCTYPE html>
<html lang="en">
<head>
<title>페이지 이동 - 리다이렉션</title>
<script>
</script>
</head>
<body>
<a href="http://www.github.com">깃허브</a>
<form action="">
<button>유튜브</button>
<button type = "submit">유튜브 서브밋</button>
<button type = "button" onclick = "location.href='http://www.youtube.com';">유튜브 버튼</button>
</form>
</body>
</html>
inner-HTML과 innerText
<!DOCTYPE html>
<html lang="en">
<head>
<title>innerHTML과 innerText</title>
<script>
</script>
</head>
<body>
<h1 id="id1">innerHTML의 내용</h1>
<h1 id="id2">innerText의 내용</h1>
<script>
let e1 = document.getElementById("id1");
e1.innerHTML = "<ins>변경된 내용</ins>";
let e2 = document.getElementById("id2");
e2.innerText = "<ins>변경된 내용</ins>"
</script>
</body>
</html>
문서객체 선택하는 방법
<!DOCTYPE html>
<html lang="en">
<head>
<title>문서객체 선택하는 방법</title>
<script>
window.onload = () => {
let h1 = document.getElementById("header1");
h1.innerHTML = "찾음!";
let arrayH2 = document.getElementsByClassName('header-h2');
console.log(arrayH2);
for(let h2 of arrayH2){
h2.innerHTML = "찾음!";
}
let arrayP = document.getElementsByTagName('p');
console.log(arrayP);
for(let p of arrayP){
p.innerText = "찾음!";
}
let h1_2 = document.querySelector('#header2');
h1_2.innerHTML = "찾음!";
let arrayH2_2 = document.querySelectorAll('.header-h2');
console.log(arrayH2_2);
};
</script>
</head>
<body>
<h1 id = "header1">제목태그 1</h1>
<h1 id = "header2">제목태그 2</h1>
<h2 class = "header-h2">제목태그 3</h2>
<h2 class = "header-h2">제목태그 4</h2>
<h2 class = "header-h2">제목태그 5</h2>
<p>문단태그 p</p>
<p>문단태그 p</p>
<p>문단태그 p</p>
<script></script>
</body>
</html>
연습문제 - 객체선택
<!DOCTYPE html>
<html lang="ko">
<head>
<title>연습문제 : 객체선택 연습</title>
<script>
window.onload = () => {
let arrayP = document.getElementsByTagName("anchor");
anchor.innerHTML = "앵커태그 선택됨";
let p = document.getElementsByClassName("para");
p[0].innerHTML = "문단태그-1";
p[1].innerHTML = "문단태그-2";
let h3 = document.getElementByName("h3");
h3[0].innerHTML = "헤더태그 h3선택됨.";
};
</script>
</head>
<body>
<div>
<a id="anchor" href="#" onclick="">앵커태그</a>
<p class="para">
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
Porro ducimus obcaecati saepe aspernatur sint tempora sequi facere neque totam,
exercitationem ratione itaque. Cum, sapiente ipsa aliquid dicta necessitatibus voluptatibus fugit?
</p>
<p class="para">
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
Porro ducimus obcaecati saepe aspernatur sint tempora sequi facere neque totam,
exercitationem ratione itaque. Cum, sapiente ipsa aliquid dicta necessitatibus voluptatibus fugit?
</p>
<h3>header h3</h3>
</div>
</body>
</html>
연습문제 - CSS 선택자로 문서요소 선택하기
<!DOCTYPE html>
<html lang="ko">
<head>
<title>CSS 선택자로 문서요소 선택하기</title>
<script>
window.onload = () => {
let wrapper = document.querySelector('#wrap > div > h1');
wrapper.style.color = 'green';
let headers = document.querySelectorAll('.headers');
headers[0].style.color = 'blue';
headers[1].style.color = 'orange';
let wrap = document.querySelector('#wrap');
wrap.style.border = '1px solid red';
}
</script>
</head>
<body>
<h1 id="header-1",h1.style.color = "green";>제목태그1</h1>
<h1 id="header-2">제목태그2</h1>
<h1 class="headers">제목태그3</h1>
<h1 class="headers">제목태그4</h1>
<h1 class="headers">제목태그5</h1>
<div id="wrap">
<div>
<h1>Wrapper</h1>
</div>
</div>
</body>
</html>
마우스 클릭 이벤트
<!DOCTYPE html>
<html lang="ko">
<head>
<title>마우스클릭 이벤트</title>
<script>
window.onload = function() {
var buttonA = document.getElementById('button-a');
var buttonB = document.getElementById('button-b');
var counterA = document.getElementById('counter-a');
var counterB = document.getElementById('counter-b');
buttonA.onclick = () => {
counterA.innerHTML = Number(counterA.innerHTML) + 1;
};
buttonB.onclick = () => {
counterB.innerHTML = Number(counterA.innerHTML) + 1;
};
};
</script>
</head>
<body>
<button id="button-a">ButtonA</button>
<button id="button-b">ButtonB</button>
<h1>Button A - <span id="counter-a">7</span></h1>
<h1>Button B - <span id="counter-b">3</span></h1>
</body>
</html>
연습문제 - 계산기
<!DOCTYPE html>
<html lang="ko">
<head>
<title>연습문제 - 계산기 프로그램 </title>
<style>
#wrap {
border: 1px solid black;
padding: 0;
margin: 0 auto;
width: 300px;
height: 500px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
align-items: center;
text-align: center;
}
#res {
display: flex;
}
#num1,
#num2 {
background-color: rgb(216, 213, 213);
margin-bottom: 18px;
margin-left: 20px;
width: 150px;
height: 25px;
text-align: center;
border: 1px solid rgb(112, 112, 112);
}
#result {
background-color: rgb(112, 112, 112);
color: white;
margin-bottom: 18px;
margin-left: 5px;
width: 150px;
height: 25px;
text-align: center;
border: 1px solid rgb(112, 112, 112);
}
#add,
#mul,
#sub,
#divide {
width: 220px;
height: 30px;
background-color: rgb(40, 108, 209);
border: 0px;
color: white;
margin-bottom: 5px;
}
#del {
width: 220px;
height: 30px;
background-color: rgb(241, 50, 50);
border: 0px;
color: white;
}
#btn-group {
display: flex;
flex-flow: column wrap;
justify-items: center;
}
</style>
<script>
window.onload = function () {
var num1 = document.getElementById('num1');
var num2 = document.getElementById('num2');
var result = document.getElementById('result');
var button_add = document.getElementById('add');
var button_sub = document.getElementById('sub');
var button_mul = document.getElementById('mul');
var button_divide = document.getElementById('divide');
var button_del = document.getElementById('del');
button_add.onclick = () => {
result.value = Number(num1.value) + Number(num2.value);
};
button_sub.onclick = () => {
result.value = Number(num1.value) - Number(num2.value);
};
button_mul.onclick = () => {
result.value = Number(num1.value) * Number(num2.value);
};
button_divide.onclick = () => {
result.value = Number(num1.value) / Number(num2.value);
};
button_del.onclick = () => {
num1.value = null;
num2.value = null;
result.value = null;
};
};
</script>
</head>
<body>
<div id="wrap">
<div>
<p>JavaScript</p>
<p>계산기 프로그램을 작성해보자</p>
</div>
<div>
<label>숫자 1</label><input type="text" id="num1"></input><br />
</div>
<div>
<label>숫자 2</label><input type="text" id="num2"></input><br />
</div>
<div id="res">
<label>연산 결과</label><input type="text" disabled="disbled" id="result"></input>
</div>
<div id="btn-group">
<button id="add">덧셈</button>
<button id="sub">뺄셈</button>
<button id="mul">곱셈</button>
<button id="divide">나눗셈</button>
<button id="del">지우기</button>
</div>
</div>
</body>
</html>
연습문제 - 약관동의 체크박스
<!DOCTYPE html>
<html lang="ko">
<head>
<title>약관동의 체크박스 확인하기</title>
<script>
function checkAll() {
let arrCheckbox = document.getElementsByTagName('input');
for (let chk of arrCheckbox) {
chk.checked = true;
}
}
function agree() {
let arrCheckbox = document.getElementsByName('agree');
let isAllChecked = true;
for (let chk of arrCheckbox) {
console.log(chk.checked);
if (chk.checked == false) {
isAllChecked = false;
break;
}
}
}
function back() {
let arrCheckbox = document.getElementsByTagName('input');
for (let chk of arrCheckbox) {
chk.checked = false;
}
}
</script>
</head>
<body>
<form action="">
<textarea cols="30" rows="3">약관1에 대해서...</textarea> <br>
<input type="checkbox" name="agree" id="chk1"> 약관동의1 <br>
<textarea cols="30" rows="3">약관2에 대해서...</textarea> <br>
<input type="checkbox" name="agree" id="chk2"> 약관동의2 <br>
<textarea cols="30" rows="3">약관3에 대해서...</textarea> <br>
<input type="checkbox" name="agree" id="chk3"> 약관동의3 <br>
</form>
<br>
<a href="javascript:checkAll();">모두 동의 체크하기</a> <br>
<a href="javascript:agree();">모두 동의 확인</a> <br>
<a href="javascript:back();">동의 취소</a> <br>
</body>
</html>