├── 10 ├── main.html ├── css │ ├── browser.css │ ├── reload.css │ ├── location.css │ ├── screen.css │ └── popup.css ├── js │ ├── popup-result.js │ ├── sol-1.js │ └── sol-2.js ├── main-result.html ├── quiz-1.html ├── sol-1.html ├── quiz-2.html ├── sol-2.html ├── popup.html ├── popup-result.html ├── current.html ├── locationObject.html ├── browser.html ├── browserCheck.html └── screenObject.html ├── 04 ├── css │ ├── for.css │ ├── even.css │ ├── factorial.css │ ├── dowhile.css │ ├── gugudan.css │ ├── multi3.css │ └── switch.css ├── images │ ├── travel.jpg │ ├── event-bg.jpg │ └── numbers.jpg ├── repeat.html ├── for.html ├── factorial.html ├── gugudan.html ├── quiz-1.html ├── diy-gugudan.html ├── multi3.html ├── even.html ├── quiz-2.html ├── switch.html ├── repeat-result.html ├── diy-factorial.html ├── factorial-result.html ├── diy-factorial-result.html ├── multi3-temp.html ├── even-result.html ├── diy-gugudan-result.html ├── gugudan-result.html ├── sol-2.html ├── sol-1.html ├── switch-result.html ├── multi3-result.html └── for-result.html ├── git-1.png ├── git-2.png ├── git-3.png ├── git-4.png ├── js-basic.jpeg ├── 08 ├── images │ ├── ace.png │ ├── boy.png │ ├── dog.png │ ├── pet.png │ ├── card.png │ ├── girl.png │ ├── pic-1.jpg │ ├── pic-2.jpg │ ├── pic-3.jpg │ ├── pic-4.jpg │ ├── tree-1.jpg │ ├── tree-2.jpg │ ├── tree-3.jpg │ ├── tree-4.jpg │ ├── tree-5.jpg │ ├── tree-6.jpg │ ├── work.jpg │ ├── flower1.jpg │ ├── coffee-blue.jpg │ ├── coffee-gray.jpg │ ├── coffee-pink.jpg │ ├── tree-1-thumb.jpg │ ├── tree-2-thumb.jpg │ ├── tree-3-thumb.jpg │ ├── tree-4-thumb.jpg │ ├── tree-5-thumb.jpg │ └── tree-6-thumb.jpg ├── css │ ├── domevent.css │ ├── event.css │ ├── dom.css │ ├── nameList.css │ ├── display.css │ └── product.css ├── js │ ├── domevent.js │ ├── sol-2.js │ ├── product.js │ ├── domevent-result.js │ ├── domcss.js │ ├── sol-1.js │ ├── register-create.js │ ├── showBig-result.js │ ├── diy-showBig-result.js │ ├── register-insert.js │ ├── product-result.js │ ├── domevent3.js │ ├── register-delete.js │ └── register-result.js ├── domCss1.html ├── domEvent.html ├── domEvent3.html ├── domNode.html ├── domCss3.html ├── domEvent-result.html ├── nodeList.html ├── domEvent1.html ├── register.html ├── domEvent2.html ├── diy-register.html ├── register-create.html ├── register-insert.html ├── domCss2.html ├── register-delete.html ├── register-result.html ├── diy-register-result.html ├── quiz-1.html ├── dom.html ├── sol-1.html ├── quiz-2.html ├── acessDom.html ├── dom-result.html ├── sol-2.html ├── showBig.html ├── diy-showBig.html ├── product.html ├── product-result.html └── showBig-result.html ├── 03 ├── images │ └── sale.png ├── quiz-2.html ├── quiz-1.html ├── diy-age.html ├── age.html ├── sol-2.html ├── sol-1.html ├── diy-age-result.html ├── age-temp.html ├── age-result.html ├── css │ ├── bargain.css │ ├── quiz.css │ └── age.css ├── bargain.html ├── diy-bargain.html ├── bargain-temp.html ├── bargain-result.html └── diy-bargain-result.html ├── 05 ├── js │ ├── add-result.js │ ├── global.js │ ├── local.js │ ├── sol-1.js │ ├── add-return.js │ ├── diy-function-result.js │ ├── event-dom-result.js │ ├── diy-event-result.js │ ├── sol-2.js │ ├── event.js │ ├── diy-event.js │ └── event-result.js ├── images │ └── flower1.jpg ├── css │ ├── add.css │ ├── function.css │ ├── event.css │ └── d-day.css ├── quiz-1.html ├── quiz-2.html ├── diy-function.html ├── sol-1.html ├── sol-2.html ├── global.html ├── local.html ├── diy-function-result.html ├── add.html ├── add-return.html ├── add-result.html ├── event-dom.html ├── event-dom-result.html ├── blockVar.html ├── event.html ├── diy-event.html ├── event-handler.html ├── event-handler-result.html ├── event-result.html ├── diy-event-result.html └── domEvent.html ├── 07 ├── images │ ├── gift.jpg │ └── labels.png ├── css │ ├── 07.css │ ├── list.css │ └── input.css ├── index.html ├── js │ ├── quiz-1.js │ ├── sol-1.js │ ├── checklist-1.js │ ├── sol-2.js │ ├── checklist-2.js │ ├── diy-itemList-result.js │ ├── diy-itemList.js │ └── checklist-result.js ├── quiz-1.html ├── sol-1.html ├── index-1.html ├── diy-itemList.html ├── index-2.html ├── index-3.html ├── quiz-2.html ├── index-result.html ├── sol-2.html └── diy-itemList-result.html ├── 02 ├── js │ ├── welcome.js │ └── change-result.js ├── css │ └── change-color.css ├── live-server.html ├── quiz-1.html ├── greeting.html ├── sol-1.html ├── quiz-2.html ├── change-result.html ├── sol-2.html ├── quiz-3.html ├── sol-3.html ├── greeting-result.html ├── js-time.html ├── js-time-result.html ├── change-1.html └── change-2.html ├── 실전프로젝트 ├── [실전]1_숫자 맞히기.pdf ├── [실전]3_온도 변환기.pdf ├── [실전]2_이미지 슬라이드 쇼.pdf ├── slideShow │ ├── images │ │ ├── pic-1.jpg │ │ ├── pic-2.jpg │ │ ├── pic-3.jpg │ │ └── pic-4.jpg │ ├── slideshow.html │ ├── slideshow-result.html │ ├── js │ │ └── slideshow-result.js │ └── css │ │ └── slideshow.css ├── upAndDown │ ├── upAndDown.html │ ├── upAndDown-resutl.html │ ├── keycode.html │ ├── js │ │ └── upanddown-result.js │ └── css │ │ └── finding.css └── converter │ ├── converter.html │ ├── converter-result.html │ ├── js │ └── converter-result.js │ └── css │ └── converter.css ├── 06 ├── css │ ├── book.css │ ├── obj.css │ ├── d-day-old.css │ ├── timer.css │ └── d-day.css ├── js │ ├── diy-dday-temp.js │ ├── sol-1.js │ ├── dday-temp.js │ ├── sol-2.js │ ├── object-result.js │ ├── book-result.js │ ├── diy-dday-result.js │ ├── dday-result.js │ └── dday-100.js ├── book.html ├── sol-1.html ├── object.html ├── sol-2.html ├── book-result.html ├── quiz-2.html ├── object-result.html ├── quiz-1.html ├── dday.html ├── diy-dday.html ├── dday-temp.html ├── dday-100.html ├── diy-dday-temp.html ├── dday-result.html └── diy-dday-result.html ├── 09 ├── css │ ├── sol-1.css │ ├── getForm.css │ ├── login.css │ ├── sol-2.css │ ├── register.css │ └── order.css ├── js │ ├── getForm.js │ ├── sol-2.js │ ├── register-tmp.js │ ├── sol-1.js │ ├── order-result.js │ ├── signup.js │ ├── signup-result.js │ ├── shipment-result.js │ ├── shipment.js │ └── register-result.js ├── reg.html ├── quiz-2.html ├── sol-2.html ├── quiz-1.html ├── sol-1.html ├── register.html ├── register-result.html ├── diy-signup.html ├── register-tmp.html └── diy-signup-result.html └── README.md /04/css/for.css: -------------------------------------------------------------------------------- 1 | body { 2 | text-align:center; 3 | font-size:2em; 4 | } -------------------------------------------------------------------------------- /git-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/git-1.png -------------------------------------------------------------------------------- /git-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/git-2.png -------------------------------------------------------------------------------- /git-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/git-3.png -------------------------------------------------------------------------------- /git-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/git-4.png -------------------------------------------------------------------------------- /js-basic.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/js-basic.jpeg -------------------------------------------------------------------------------- /08/images/ace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/ace.png -------------------------------------------------------------------------------- /08/images/boy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/boy.png -------------------------------------------------------------------------------- /08/images/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/dog.png -------------------------------------------------------------------------------- /08/images/pet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/pet.png -------------------------------------------------------------------------------- /03/images/sale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/03/images/sale.png -------------------------------------------------------------------------------- /04/images/travel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/04/images/travel.jpg -------------------------------------------------------------------------------- /05/js/add-result.js: -------------------------------------------------------------------------------- 1 | function addNumber() { 2 | var sum = 10 + 20; 3 | alert(sum); 4 | } -------------------------------------------------------------------------------- /07/images/gift.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/07/images/gift.jpg -------------------------------------------------------------------------------- /07/images/labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/07/images/labels.png -------------------------------------------------------------------------------- /08/images/card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/card.png -------------------------------------------------------------------------------- /08/images/girl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/girl.png -------------------------------------------------------------------------------- /08/images/pic-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/pic-1.jpg -------------------------------------------------------------------------------- /08/images/pic-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/pic-2.jpg -------------------------------------------------------------------------------- /08/images/pic-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/pic-3.jpg -------------------------------------------------------------------------------- /08/images/pic-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/pic-4.jpg -------------------------------------------------------------------------------- /08/images/tree-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-1.jpg -------------------------------------------------------------------------------- /08/images/tree-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-2.jpg -------------------------------------------------------------------------------- /08/images/tree-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-3.jpg -------------------------------------------------------------------------------- /08/images/tree-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-4.jpg -------------------------------------------------------------------------------- /08/images/tree-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-5.jpg -------------------------------------------------------------------------------- /08/images/tree-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-6.jpg -------------------------------------------------------------------------------- /08/images/work.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/work.jpg -------------------------------------------------------------------------------- /02/js/welcome.js: -------------------------------------------------------------------------------- 1 | var name = prompt("이름을 입력하세요."); 2 | document.write("

" + name + "님, 어서오세요

"); -------------------------------------------------------------------------------- /04/images/event-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/04/images/event-bg.jpg -------------------------------------------------------------------------------- /04/images/numbers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/04/images/numbers.jpg -------------------------------------------------------------------------------- /05/images/flower1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/05/images/flower1.jpg -------------------------------------------------------------------------------- /08/images/flower1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/flower1.jpg -------------------------------------------------------------------------------- /04/css/even.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top:20px; 3 | font-size:1.2em; 4 | text-align:center; 5 | } 6 | -------------------------------------------------------------------------------- /08/images/coffee-blue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/coffee-blue.jpg -------------------------------------------------------------------------------- /08/images/coffee-gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/coffee-gray.jpg -------------------------------------------------------------------------------- /08/images/coffee-pink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/coffee-pink.jpg -------------------------------------------------------------------------------- /실전프로젝트/[실전]1_숫자 맞히기.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/[실전]1_숫자 맞히기.pdf -------------------------------------------------------------------------------- /실전프로젝트/[실전]3_온도 변환기.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/[실전]3_온도 변환기.pdf -------------------------------------------------------------------------------- /08/images/tree-1-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-1-thumb.jpg -------------------------------------------------------------------------------- /08/images/tree-2-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-2-thumb.jpg -------------------------------------------------------------------------------- /08/images/tree-3-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-3-thumb.jpg -------------------------------------------------------------------------------- /08/images/tree-4-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-4-thumb.jpg -------------------------------------------------------------------------------- /08/images/tree-5-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-5-thumb.jpg -------------------------------------------------------------------------------- /08/images/tree-6-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/08/images/tree-6-thumb.jpg -------------------------------------------------------------------------------- /실전프로젝트/[실전]2_이미지 슬라이드 쇼.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/[실전]2_이미지 슬라이드 쇼.pdf -------------------------------------------------------------------------------- /실전프로젝트/slideShow/images/pic-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/slideShow/images/pic-1.jpg -------------------------------------------------------------------------------- /실전프로젝트/slideShow/images/pic-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/slideShow/images/pic-2.jpg -------------------------------------------------------------------------------- /실전프로젝트/slideShow/images/pic-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/slideShow/images/pic-3.jpg -------------------------------------------------------------------------------- /실전프로젝트/slideShow/images/pic-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funnycom/js-basic-book/HEAD/실전프로젝트/slideShow/images/pic-4.jpg -------------------------------------------------------------------------------- /04/css/factorial.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top:50px; 3 | text-align:center; 4 | font-size:1.8em; 5 | color:blue; 6 | } 7 | -------------------------------------------------------------------------------- /05/js/global.js: -------------------------------------------------------------------------------- 1 | var myVar = 100; 2 | test(); 3 | document.write("myVar is " + myVar); 4 | 5 | function test() { 6 | myVar = 50; 7 | } -------------------------------------------------------------------------------- /05/js/local.js: -------------------------------------------------------------------------------- 1 | var myVar = 100; 2 | test(); 3 | document.write("myVar is " + myVar); 4 | 5 | function test() { 6 | var myVar = 50; 7 | } -------------------------------------------------------------------------------- /02/js/change-result.js: -------------------------------------------------------------------------------- 1 | var heading = document.querySelector('#heading'); 2 | heading.onclick = function() { 3 | heading.style.color = "red"; 4 | } -------------------------------------------------------------------------------- /07/css/07.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size:1.2em; 3 | line-height:30px; 4 | text-align:center; 5 | } 6 | img { 7 | max-width:100%; 8 | } -------------------------------------------------------------------------------- /08/css/domevent.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:400px; 3 | height:400px; 4 | margin:0 auto; 5 | padding-top:20px; 6 | text-align:center; 7 | } -------------------------------------------------------------------------------- /05/js/sol-1.js: -------------------------------------------------------------------------------- 1 | function sumMulti(x, y) { 2 | if (x == y) return x * y; 3 | else return x + y; 4 | } 5 | 6 | console.log(sumMulti(5, 10)); 7 | console.log(sumMulti(10, 10)); -------------------------------------------------------------------------------- /06/css/book.css: -------------------------------------------------------------------------------- 1 | body { background:url('../images/bg.png') repeat-x top left; } 2 | h1 { margin-top:180px; } 3 | p { width:400px; margin-bottom:10px; padding:10px; border:1px solid #ccc;} -------------------------------------------------------------------------------- /02/css/change-color.css: -------------------------------------------------------------------------------- 1 | body { 2 | text-align:center; 3 | } 4 | #heading { 5 | color:blue; 6 | } 7 | #text { 8 | color:gray; 9 | font-size:15px; 10 | } -------------------------------------------------------------------------------- /05/css/add.css: -------------------------------------------------------------------------------- 1 | button { 2 | border:1px solid #ccc; 3 | padding:10px 15px; 4 | margin:20px auto; 5 | font-size:16px; 6 | } 7 | 8 | body { 9 | text-align: center; 10 | } -------------------------------------------------------------------------------- /06/css/obj.css: -------------------------------------------------------------------------------- 1 | #display { 2 | width:500px; 3 | margin:20px auto; 4 | padding:10px; 5 | border:1px solid #ccc; 6 | text-align:center; 7 | font-size:20px; 8 | line-height:30px; 9 | } -------------------------------------------------------------------------------- /08/js/domevent.js: -------------------------------------------------------------------------------- 1 | var pic = document.querySelector('#pic'); 2 | 3 | function changePic() { 4 | pic.src = "images/boy.png"; 5 | } 6 | function originPic() { 7 | pic.src = "images/girl.png"; 8 | } 9 | -------------------------------------------------------------------------------- /08/js/sol-2.js: -------------------------------------------------------------------------------- 1 | var buttons = document.querySelectorAll(".check"); 2 | for(var i=0; i 2 | 3 | 4 | 5 | 6 | 팝업 창 표시하기 7 | 8 | 9 |

이 문서가 열리면 자동으로 팝업 창이 표시됩니다.

10 | 11 | 12 | -------------------------------------------------------------------------------- /10/css/browser.css: -------------------------------------------------------------------------------- 1 | table, tr { 2 | border:1px solid #222; 3 | border-collapse: collapse; 4 | } 5 | td { 6 | padding:10px 15px; 7 | border:1px solid #222; 8 | } 9 | td.title { 10 | width:150px; 11 | font-weight:bold; 12 | } -------------------------------------------------------------------------------- /09/js/getForm.js: -------------------------------------------------------------------------------- 1 | var selectMenu = document.testForm.major; // 셀렉트 메뉴를 가져와 selectMenu로 저장 2 | function displaySelect() { 3 | var selectedText = selectMenu.options[selectMenu.selectedIndex].innerText; 4 | alert("[" + selectedText + "]를 선택했습니다."); 5 | } -------------------------------------------------------------------------------- /10/js/popup-result.js: -------------------------------------------------------------------------------- 1 | function openPop() { 2 | var newWin = window.open("\popup-result.html", "", "width=400, height=400"); 3 | if(newWin == null) { 4 | alert("팝업이 차단되어 있습니다. 팝업 차단을 해제하고 새로고침해 주세요."); 5 | } 6 | } 7 | 8 | window.onload = openPop; -------------------------------------------------------------------------------- /07/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | To do list 7 | 8 | 9 |
10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /10/css/reload.css: -------------------------------------------------------------------------------- 1 | #container{ 2 | width:500px; 3 | margin:20px auto; 4 | padding:10px; 5 | } 6 | button { 7 | margin-top:20px; 8 | padding:10px 40px; 9 | border:1px solid #ccc; 10 | background:rgba(253, 234, 234, 0.6); 11 | } -------------------------------------------------------------------------------- /04/css/multi3.css: -------------------------------------------------------------------------------- 1 | 2 | #result { 3 | width:500px; 4 | height:100px; 5 | margin: 50px auto; 6 | padding:10px; 7 | border:1px solid #ccc; 8 | box-shadow:1px 2px 1px #666; 9 | font-size:1.4em; 10 | line-height:100px; 11 | font-weight:bold; 12 | text-align:center; 13 | } -------------------------------------------------------------------------------- /05/js/add-return.js: -------------------------------------------------------------------------------- 1 | var num1 = parseInt(prompt("첫 번째 숫자 : ")); 2 | var num2 = parseInt(prompt("두 번째 숫자 : ")); 3 | var result = addNumber(num1, num2); 4 | alert("두 수를 더한 값은 " + result + "입니다."); 5 | 6 | function addNumber(a, b) { 7 | var sum = a + b; 8 | return sum; 9 | } 10 | -------------------------------------------------------------------------------- /10/main-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 팝업 창 표시하기 7 | 8 | 9 |

이 문서가 열리면 자동으로 팝업 창이 표시됩니다.

10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /08/js/product.js: -------------------------------------------------------------------------------- 1 | var bigPic = document.querySelector("#cup"); 2 | var smallPics = document.querySelectorAll(".small"); 3 | 4 | for(i=0; i 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 1 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 2 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /06/js/diy-dday-temp.js: -------------------------------------------------------------------------------- 1 | var now = new Date(); 2 | var firstDay = new Date("2018-03-23"); 3 | var toNow = now.getTime(); 4 | var toFirst = firstDay.getTime(); 5 | var passedTime = toNow - toFirst; 6 | var passedDay = Math.round(passedTime/(1000*60*60*24)); 7 | document.querySelector('#accent').innerText = passedDay + "일"; -------------------------------------------------------------------------------- /07/js/quiz-1.js: -------------------------------------------------------------------------------- 1 | var numbers = [2, 4, 6, 8, 10]; 2 | showArray(numbers); 3 | 4 | function showArray(arr) { 5 | var str = ""; 6 | for (var i=0; i"; 8 | } 9 | str += "
"; 10 | document.write(str); 11 | } -------------------------------------------------------------------------------- /10/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 팝업 창 표시하기 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /03/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 사각형 너비 구하기 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /10/css/location.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:500px; 3 | margin:10px auto; 4 | } 5 | #display { 6 | margin-top:10px; 7 | padding:10px; 8 | border:1px solid #222; 9 | box-shadow: 1px 0 1px #ccc; 10 | } 11 | p { 12 | font-size:1em; 13 | } 14 | button { 15 | margin-top:20px; 16 | text-align:center; 17 | } -------------------------------------------------------------------------------- /10/js/sol-1.js: -------------------------------------------------------------------------------- 1 | window.onload = window.open("current.html", "", "width=300, height=50"); 2 | 3 | // 아래 방법처럼 displayTime() 함수를 선언한 후 load 이벤트가 발생했을 때 함수를 연결할 수도 있음. 4 | // window.onload = displayTime(); 5 | // function displayTime() { 6 | // window.open("current.html", "", "width=300, height=50"); 7 | // } -------------------------------------------------------------------------------- /03/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 웹 브라우저 창에 표시하기 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /04/css/switch.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color:#0c3268; 3 | color:rgb(243, 243, 243); 4 | } 5 | 6 | p { 7 | margin-top:80px; 8 | font-size:2em; 9 | font-weight:700; 10 | text-align: center; 11 | text-shadow:1px 2px 1px #000; 12 | } 13 | 14 | p strong { 15 | font-size:2.2em; 16 | color:yellow; 17 | } -------------------------------------------------------------------------------- /08/js/domevent-result.js: -------------------------------------------------------------------------------- 1 | var pic = document.querySelector('#pic'); 2 | pic.addEventListener("mouseover", changePic, false); 3 | pic.addEventListener("mouseout", originPic, false); 4 | 5 | function changePic() { 6 | pic.src = "images/boy.png"; 7 | } 8 | function originPic() { 9 | pic.src = "images/girl.png"; 10 | } -------------------------------------------------------------------------------- /04/repeat.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/diy-function.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 직접 만들어 보는 함수 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/js/diy-function-result.js: -------------------------------------------------------------------------------- 1 | var num1 = parseInt(prompt("첫 번째 숫자는? ")); 2 | var num2 = parseInt(prompt("두 번째 숫자는? ")); 3 | var result = add(num1, num2); 4 | 5 | document.write("

" + num1 + " + " + num2 + " = " + result + "

"); 6 | 7 | function add(a, b) { 8 | var sum = a + b; 9 | return sum; 10 | } -------------------------------------------------------------------------------- /10/js/sol-2.js: -------------------------------------------------------------------------------- 1 | function changeBg() { 2 | var x = Math.floor(Math.random() * 256); 3 | var y = Math.floor(Math.random() * 256); 4 | var z = Math.floor(Math.random() * 256); 5 | var bgColor = "rgb(" + x + "," + y + "," + z + ")"; 6 | document.body.style.background = bgColor; 7 | } 8 | 9 | changeBg(); -------------------------------------------------------------------------------- /02/live-server.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | live server 8 | 9 | 10 |

자바스크립트

11 | 12 | -------------------------------------------------------------------------------- /10/css/screen.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:500px; 3 | margin:10px auto; 4 | } 5 | .display { 6 | margin-top:10px; 7 | padding:10px; 8 | border:1px solid #222; 9 | box-shadow: 1px 0 1px #ccc; 10 | } 11 | p { 12 | font-size:1em; 13 | } 14 | button { 15 | margin-top:20px; 16 | text-align:center; 17 | } -------------------------------------------------------------------------------- /10/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 팝업 창 표시하기 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/js/event-dom-result.js: -------------------------------------------------------------------------------- 1 | var coverImage = document.querySelector("#cover"); 2 | coverImage.onclick = function() { 3 | alert('눌렀습니다'); 4 | }; 5 | coverImage.onmouseover = function() { 6 | coverImage.style.border = "5px black solid"; 7 | }; 8 | coverImage.onmouseout = function() { 9 | coverImage.style.border = ""; 10 | }; -------------------------------------------------------------------------------- /05/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 1 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 2 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/global.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 전역 변수와 지역 변수 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/js/diy-event-result.js: -------------------------------------------------------------------------------- 1 | function showDetail() { 2 | document.querySelector('#desc').style.display = "block"; 3 | document.querySelector('#open').style.display = "none"; 4 | } 5 | 6 | function hideDetail() { 7 | document.querySelector('#desc').style.display = "none"; 8 | document.querySelector('#open').style.display = "block"; 9 | } -------------------------------------------------------------------------------- /05/local.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 전역 변수와 지역 변수 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /09/js/sol-2.js: -------------------------------------------------------------------------------- 1 | var radius = document.querySelector("#radius"); 2 | var start = document.querySelector("#start"); 3 | 4 | start.addEventListener("click", function() { 5 | document.querySelector("#round").value = Number(radius.value) * Math.PI * 2; 6 | document.querySelector("#area").value = Math.PI * Number(radius.value) * Number(radius.value); 7 | }); -------------------------------------------------------------------------------- /04/for.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 중첩된 for 문 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /06/js/sol-1.js: -------------------------------------------------------------------------------- 1 | var member1 = { 2 | id:123, 3 | name: "홍길동", 4 | age:25, 5 | address : "서울" 6 | }; 7 | 8 | document.write("

" + member1.name + "

"); 9 | document.write(""); -------------------------------------------------------------------------------- /04/factorial.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 팩토리얼 계산하기 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /06/book.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 도서 관리 프로그램 - 객체 만들기 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /06/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | memeber 객체 7 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /04/gugudan.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 구구단 - for문 8 | 9 | 10 | 11 |

구구단

12 | 13 | -------------------------------------------------------------------------------- /04/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 짝수일까, 홀수일까 8 | 9 | 10 |

짝수일까, 홀수일까

11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /05/diy-function-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 직접 만들어 보는 함수 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /05/add.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 함수 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /09/js/register-tmp.js: -------------------------------------------------------------------------------- 1 | var userId = document.querySelector("#user-id"); // ‘아이디’ 필드를 가져와 변수에 저장 2 | 3 | userId.onchage = checkId; 4 | 5 | function checkId() { 6 | if (userId.value.length < 4 || userId.value.length > 15) { // userId 필드 내용의 길이가 4 이하이거나 15 이상일 경우 실행 7 | alert("4~15 자리의 영문과 숫자를 사용하세요."); // 오류 메시지 출력 8 | userId.select(); // 다시 입력할 수 있도록 userId 필드 선택 9 | } 10 | } -------------------------------------------------------------------------------- /04/diy-gugudan.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 구구단 연습 8 | 9 | 10 | 11 |

구구단

12 | 13 | 14 | -------------------------------------------------------------------------------- /04/multi3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 3의 배수인지 확인 8 | 9 | 10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /06/object.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 사용자 정의 객체 8 | 9 | 10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /06/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Circle 객체 7 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /05/js/sol-2.js: -------------------------------------------------------------------------------- 1 | var num1 = parseInt(prompt("비교할 첫 번째 숫자: ")); // parseInt 함수는 괄호 안의 값을 정수형 숫자로 변환합니다. 2 | var num2 = parseInt(prompt("비교할 두 번째 숫자 : ")); 3 | 4 | compareTwo(num1, num2); 5 | 6 | function compareTwo(x, y) { 7 | if (x == y) alert(x + "와(과) " + y + "는 같습니다."); 8 | else if (x > y) alert( x + "(이)가 " + y + "보다 큽니다."); 9 | else alert(y + "(이)가 " + x + "보다 큽니다."); 10 | } -------------------------------------------------------------------------------- /05/add-return.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 함수 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /08/domCss1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM CSS 8 | 9 | 10 |

JS와 CSS

11 |

자바스크립트를 사용해서 웹 문서의 CSS 속성을 제어할 수 있습니다.

12 | 13 | -------------------------------------------------------------------------------- /04/even.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 짝수 더하기 8 | 9 | 10 | 11 |

짝수끼리 더하기

12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /06/book-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 도서 관리 프로그램 - 객체 만들기 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /02/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제-1 8 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /06/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Circle 객체 7 | 10 | 11 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /02/greeting.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Welcome 8 | 14 | 15 | 16 |

어서오세요

17 | 18 | -------------------------------------------------------------------------------- /04/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 3의 배수 찾기 8 | 14 | 15 | 16 |

3의 배수 찾기

17 | 18 | -------------------------------------------------------------------------------- /06/object-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 사용자 정의 객체 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /05/add-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 함수 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /05/event-dom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /02/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제-1 8 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /03/diy-age.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 나이 계산하기 8 | 9 | 10 | 11 | 12 |
(결과 값 표시)
13 | 14 | -------------------------------------------------------------------------------- /04/switch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 세션 선택 8 | 9 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /08/js/domcss.js: -------------------------------------------------------------------------------- 1 | var myRect = document.querySelector("#rect"); 2 | myRect.addEventListener("mouseover", function() { // mouseover 이벤트 처리 3 | myRect.style.backgroundColor = "green"; // myRect 요소의 배경색 4 | myRect.style.borderRadius = "50%"; // myRect 요소의 테두리 둥글게 처리 5 | }); 6 | myRect.addEventListener("mouseout", function() { // mouseout 이벤트 처리 7 | myRect.style.backgroundColor = ""; // myRect 요소의 배경색 지우기 8 | myRect.style.borderRadius = ""; // myRect 요소의 테두리 둥글게 처리 안 함 9 | }); -------------------------------------------------------------------------------- /03/age.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 나이 계산하기 8 | 9 | 10 | 11 | 12 |
(결과 값 표시)
13 | 14 | 15 | -------------------------------------------------------------------------------- /07/js/sol-1.js: -------------------------------------------------------------------------------- 1 | var numbers = [2, 4, 6, 8, 10]; 2 | showArray(numbers); 3 | 4 | var sum = 0; 5 | for(var i=0; i"; 15 | } 16 | str += ""; 17 | document.write(str); 18 | } -------------------------------------------------------------------------------- /02/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제-2 8 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /08/js/sol-1.js: -------------------------------------------------------------------------------- 1 | var myText = document.querySelector("#myText"); 2 | myText.addEventListener("click", function() { 3 | myText.style.fontSize = "20px"; 4 | myText.style.color = "blue"; 5 | myText.style.backgroundColor = "#ccc"; 6 | }); 7 | 8 | /* 또는 9 | var myText = document.querySelector("#myText"); 10 | myText.onclick = function() { 11 | myText.style.fontSize = "20px"; 12 | myText.style.color = "blue"; 13 | myText.style.backgroundColor = "#ccc"; 14 | }; 15 | */ -------------------------------------------------------------------------------- /10/css/popup.css: -------------------------------------------------------------------------------- 1 | #content { 2 | border : 2px double skyblue; 3 | border-radius:10px; 4 | padding:10px; 5 | } 6 | #content > p { 7 | font-size:14px; 8 | line-height:20px; 9 | } 10 | #detail { 11 | text-align:center; 12 | width:100%; 13 | padding:10px; 14 | background-color:#eee; 15 | } 16 | #close { 17 | text-align:right; 18 | margin-right:20px; 19 | } 20 | a:link, a:visited { 21 | text-decoration:none; 22 | } 23 | a:hover { 24 | background-color:#eee; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /08/js/register-create.js: -------------------------------------------------------------------------------- 1 | function newRegister() { 2 | var newP = document.createElement("p"); // 새 p 요소 만들기 3 | var userName = document.querySelector("#userName"); 4 | var newText = document.createTextNode(userName.value); // 새 텍스트 노드 만들기 5 | newP.appendChild(newText); // 텍스트 노드를 p 요소의 자식 요소로 연결하기 6 | 7 | var nameList = document.querySelector("#nameList"); 8 | nameList.appendChild(newP); // p 요소를 #nameList의 자식 요소로 만들기 9 | userName.value = ""; // 텍스트 필드 지우기 10 | } -------------------------------------------------------------------------------- /07/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 8 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /07/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 8 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /02/change-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 글자색 바꾸기 8 | 9 | 10 | 11 |

자바스크립트

12 |

위 텍스트를 클릭해 보세요

13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /03/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 사각형 너비 구하기 8 | 9 | 10 | 17 | 18 | -------------------------------------------------------------------------------- /05/js/event.js: -------------------------------------------------------------------------------- 1 | function showDetail() { // '상세 설명 보기'를 클릭했을 때 상세 설명을 보여주는 함수 2 | document.querySelector('#desc').style.display = "block"; // 상세 설명 부분을 화면에 표시 3 | document.querySelector('#open').style.display = "none"; // '상세 설명 보기' 단추를 화면에서 감춤 4 | } 5 | 6 | function hideDetail() { // '상세 설명 닫기'를 클릭했을 때 상세 설명을 감추는 함수 7 | document.querySelector('#desc').style.display = "none"; // 상세 설명 부분을 화면에서 감춤 8 | document.querySelector('#open').style.display = "block"; // '상세 설명 보기' 단추를 화면에 표시 9 | } -------------------------------------------------------------------------------- /06/js/dday-temp.js: -------------------------------------------------------------------------------- 1 | var now = new Date(); // 오늘 날짜 정보를 Date 객체의 인스턴스 now 객체로 만듭니다. 2 | var firstDay = new Date("2018-03-23"); // 처음 만난 날의 날짜 정보를 firstDay 객체로 만듭니다. 3 | var toNow = now.getTime(); // 오늘 날짜를 밀리초로 바꿉니다. 4 | var toFirst = firstDay.getTime(); // 처음 만난 날을 밀리초로 바꿉니다. 5 | var passedTime = toNow - toFirst; // 처음 만난 날과 오늘 사이의 차이 (밀리초) 6 | var passedDay = Math.round(passedTime/(1000*60*60*24)); // 밀리초를 일로 변환 후 반올림합니다. 7 | document.querySelector('#accent').innerText = passedDay + "일"; // #accent 영역에 표시합니다. -------------------------------------------------------------------------------- /08/domEvent.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 이벤트 처리하기 8 | 9 | 10 | 11 |
12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /08/domEvent3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 이벤트 처리하기 8 | 9 | 10 | 11 |
12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /08/domNode.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM 트리에 노드 추가하기 8 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /05/css/function.css: -------------------------------------------------------------------------------- 1 | a:link, a:visited { 2 | color:black; 3 | text-decoration: none; 4 | } 5 | ul { 6 | list-style: none; 7 | width:500px; 8 | margin:10px auto; 9 | padding:0; 10 | } 11 | li { 12 | display:inline-block; 13 | width:120px; 14 | border:1px solid #ccc; 15 | padding:10px 15px; 16 | font-size:16px; 17 | text-align:center; 18 | } 19 | #result { 20 | width:500px; 21 | height:300px; 22 | margin:30px auto; 23 | border:2px solid #ccc; 24 | border-radius:15px; 25 | } 26 | -------------------------------------------------------------------------------- /05/js/diy-event.js: -------------------------------------------------------------------------------- 1 | function showDetail() { // '상세 설명 보기'를 클릭했을 때 상세 설명을 보여주는 함수 2 | document.querySelector('#desc').style.display = "block"; // 상세 설명 부분을 화면에 표시 3 | document.querySelector('#open').style.display = "none"; // '상세 설명 보기' 단추를 화면에서 감춤 4 | } 5 | 6 | function hideDetail() { // '상세 설명 닫기'를 클릭했을 때 상세 설명을 감추는 함수 7 | document.querySelector('#desc').style.display = "none"; // 상세 설명 부분을 화면에서 감춤 8 | document.querySelector('#open').style.display = "block"; // '상세 설명 보기' 단추를 화면에 표시 9 | } -------------------------------------------------------------------------------- /09/js/sol-1.js: -------------------------------------------------------------------------------- 1 | var price = 24000; 2 | 3 | var sideMenu = document.querySelectorAll(".checkbx"); 4 | var total = document.querySelector("#total"); 5 | total.value = price+"원"; 6 | 7 | for(i=0; i원의 둘레 : 약 " + circle1.circumference() + "cm
원의 넓이 : 약 " + circle1.area()+"cm2"); 4 | 5 | function Circle(radius) { 6 | this.radius = radius, 7 | this.circumference = function() { 8 | return Math.floor(this.radius * 2 * Math.PI); 9 | } 10 | this.area = function() { 11 | return Math.floor(Math.pow(this.radius, 2) * Math.PI); 12 | } 13 | } -------------------------------------------------------------------------------- /05/event-dom-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /08/css/event.css: -------------------------------------------------------------------------------- 1 | #item { 2 | position:relative; 3 | width:500px; 4 | height:auto; 5 | padding:15px 20px; 6 | margin:auto; 7 | } 8 | button { 9 | background-color:rgba(255,255,255,0.7);; 10 | padding:5px; 11 | border:1px solid #ccc; 12 | font-size:0.8em; 13 | } 14 | .over { 15 | position:absolute; 16 | left:30px; 17 | bottom:30px; 18 | } 19 | .detail { 20 | width:400px; 21 | text-align:left; 22 | line-height:1.8; 23 | display:none; 24 | } -------------------------------------------------------------------------------- /08/domCss3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM CSS 8 | 15 | 16 | 17 |
18 | 19 |
20 | 21 | -------------------------------------------------------------------------------- /07/index-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 여행 준비물 점검 목록 7 | 8 | 9 | 10 |
11 |

여행 준비물 점검 목록

12 |
13 | 14 | 15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /04/repeat-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 18 | 19 | -------------------------------------------------------------------------------- /08/js/showBig-result.js: -------------------------------------------------------------------------------- 1 | var bigPic = document.querySelector("#cup"); // 큰 이미지 가져옴 2 | var smallPics = document.querySelectorAll(".small"); // 작은 이미지들을 노드 리스트로 가져옴 3 | 4 | for(var i = 0; i < smallPics.length; i++) { 5 | smallPics[i].addEventListener("click", chagePic); // 노드를 클릭하면 changePic 함수 실행 6 | } 7 | 8 | function chagePic() { 9 | var newPic = this.src; // click 이벤트가 발생한 대상의 src 속성 값 가져옴 10 | bigPic.setAttribute("src", newPic); // newPic 값을 큰 이미지의 src 속성에 할당. 11 | // 윗 줄을 cup.src = newPic; 로 사용해도 됨. 12 | } -------------------------------------------------------------------------------- /08/js/diy-showBig-result.js: -------------------------------------------------------------------------------- 1 | var bigPic = document.querySelector("#cup"); // 큰 이미지 가져옴 2 | var smallPics = document.querySelectorAll(".small"); // 작은 이미지들을 노드 리스트로 가져옴 3 | 4 | for(var i = 0; i < smallPics.length; i++) { 5 | smallPics[i].addEventListener("click", chagePic); // 노드를 클릭하면 changePic 함수 실행 6 | } 7 | 8 | function chagePic() { 9 | var newPic = this.src; // click 이벤트가 발생한 대상의 src 속성 값 가져옴 10 | bigPic.setAttribute("src", newPic); // newPic 값을 큰 이미지의 src 속성에 할당. 11 | // 윗 줄을 cup.src = newPic; 로 사용해도 됨. 12 | } -------------------------------------------------------------------------------- /09/css/getForm.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:500px; 3 | margin:10px auto; 4 | } 5 | form fieldset{ 6 | margin-bottom:25px; 7 | } 8 | form legend{ 9 | font-size:15px; 10 | font-weight:600; 11 | } 12 | 13 | label.reg { 14 | font-size:14px; 15 | width:110px; 16 | color:#390; 17 | font-weight:bold; 18 | float:left; 19 | text-align:right; 20 | margin-right:10px; 21 | } 22 | form ul li{ 23 | list-style:none; 24 | margin: 15px 0; 25 | font-size:14px; 26 | } 27 | #selectAll { 28 | cursor:pointer; 29 | } -------------------------------------------------------------------------------- /02/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제-2 8 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /08/domEvent-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM에 접근하기 8 | 이벤트 처리하기 9 | 10 | 11 | 12 |
13 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /03/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 웹 브라우저 창에 표시하기 8 | 15 | 16 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /07/js/checklist-1.js: -------------------------------------------------------------------------------- 1 | var itemList = []; 2 | 3 | var addBtn = document.querySelector("#add"); // '추가' 버튼 4 | addBtn.addEventListener("click", addList); // addBtn을 클릭하면 addList 함수 실행 5 | 6 | function addList() { 7 | var item = document.querySelector("#item").value; // 텍스트 필드 내용 가져옴 8 | if (item != null) { 9 | itemList.push(item); // itemList 배열의 끝에 item 변수 값 추가 10 | document.querySelector("#item").value = ""; // id=”item”인 요소의 값을 지움 11 | document.querySelector("#item").focus(); // 텍스트 필드에 focus( ) 메서드 적용 12 | } 13 | } -------------------------------------------------------------------------------- /10/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 새로고침 연습 8 | 9 | 10 | 11 |
12 |

현재 문서는 랜덤 배경색을 사용하고 있습니다.

13 |

'새로고침' 버튼을 클릭할 때마다 배경색이 달라질 것입니다.

14 | 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /05/css/event.css: -------------------------------------------------------------------------------- 1 | #item { 2 | position:relative; 3 | width:500px; 4 | height:auto; 5 | padding:15px 20px; 6 | margin:auto; 7 | } 8 | button { 9 | background-color:rgba(255,255,255,0.7);; 10 | padding:5px; 11 | border:1px solid #ccc; 12 | font-size:0.8em; 13 | } 14 | .over { 15 | position:absolute; 16 | left:30px; 17 | bottom:30px; 18 | } 19 | .detail { 20 | width:400px; 21 | text-align:left; 22 | line-height:1.8; 23 | display:none; 24 | } 25 | #cover { border: 5px solid transparent;} -------------------------------------------------------------------------------- /09/css/login.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:500px; 3 | margin:auto; 4 | } 5 | #login_input { 6 | float:left; 7 | } 8 | input[type="text"], input[type="password"]{ 9 | 10 | display:block; 11 | width:300px; 12 | height:35px; 13 | line-height:35px; 14 | border:1px solid #ccc; 15 | background-color:#eee; 16 | } 17 | #login_bttn > button { 18 | float:left; 19 | width:100px; 20 | height:78px; 21 | background-color:#222; 22 | color:white; 23 | border:none; 24 | } -------------------------------------------------------------------------------- /실전프로젝트/slideShow/slideshow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Slideshow 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /02/quiz-3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제-3 8 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /02/sol-3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제-3 8 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /02/greeting-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Welcome 8 | 14 | 15 | 16 |

어서오세요

17 | 21 | 22 | -------------------------------------------------------------------------------- /06/js/object-result.js: -------------------------------------------------------------------------------- 1 | var toyRobot = { // toyRobot 객체를 선언한 후 프로퍼티와 메서드 정의 2 | productId: "123-12", 3 | name: "Robot", 4 | price : "25,000", 5 | madeIn : "Korea", 6 | quantity: 10, 7 | showStock : function() { // showStock( ) 메서드 정의 8 | document.querySelector('#display').innerHTML = this.name + " 제품은 " + this.quantity + "개 남아있습니다."; 9 | } 10 | // , 11 | // showPrice : function() { 12 | // alert(this.name + " 제품의 가격은 " + this.price + "입니다."); 13 | // } 14 | }; 15 | 16 | toyRobot.showStock(); // toyRobot 객체의 showStock( ) 메서드 실행 -------------------------------------------------------------------------------- /07/diy-itemList.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 여행 준비물 점검 목록 7 | 8 | 9 | 10 | 11 |
12 |

여행 준비물 점검 목록

13 |
14 | 15 | 16 |
17 |
18 |
19 | 20 | -------------------------------------------------------------------------------- /07/index-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 여행 준비물 점검 목록 7 | 8 | 9 | 10 |
11 |

여행 준비물 점검 목록

12 |
13 | 14 | 15 |
16 |
17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /02/js-time.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | What time is it? 8 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /07/index-3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 여행 준비물 점검 목록 7 | 8 | 9 | 10 |
11 |

여행 준비물 점검 목록

12 |
13 | 14 | 15 |
16 |
17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /10/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 새로고침 연습 8 | 9 | 10 | 11 |
12 |

현재 문서는 랜덤 배경색을 사용하고 있습니다.

13 |

'새로고침' 버튼을 클릭할 때마다 배경색이 달라질 것입니다.

14 | 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /02/js-time-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | What time is it? 8 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /03/diy-age-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 나이 계산하기 8 | 9 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /08/js/register-insert.js: -------------------------------------------------------------------------------- 1 | function newRegister() { 2 | var newP = document.createElement("p"); // 새 p 요소 만들기 3 | var userName = document.querySelector("#userName"); 4 | var newText = document.createTextNode(userName.value); // 새 텍스트 노드 만들기 5 | newP.appendChild(newText); // 텍스트 노드를 p 요소의 자식 요소로 연결하기 6 | 7 | var nameList = document.querySelector("#nameList"); 8 | nameList.insertBefore(newP, nameList.childNodes[0]); // p 요소를 #nameList 맨 앞에 추가하기 9 | // nameList.appendChild(newP); // p 요소를 #nameList의 자식 요소로 만들기 10 | userName.value = ""; // 텍스트 필드 지우기 11 | } 12 | 13 | -------------------------------------------------------------------------------- /07/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 8 | 9 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /10/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | location 객체 7 | 8 | 9 | 10 |
11 |

공지사항

12 |

팝업 창에 표시되는 내용

13 |

팝업 창에 표시되는 내용

14 |

팝업 창에 표시되는 내용

15 |

팝업 창에 표시되는 내용

16 |

팝업 창에 표시되는 내용

17 | 18 |

창닫기

19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /05/blockVar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 24 | 25 | -------------------------------------------------------------------------------- /04/diy-factorial.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 팩토리얼 계산하기 8 | 9 | 10 | 11 | 23 | 24 | -------------------------------------------------------------------------------- /04/factorial-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 팩토리얼 계산하기 8 | 9 | 10 | 11 | 23 | 24 | -------------------------------------------------------------------------------- /08/nodeList.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 노드 리스트 9 | 10 | 11 |
12 |

참석자 명단

13 |
14 |

홍길동 X

15 |

백두산 X

16 |

도레미 X

17 |
18 |
19 | 20 | -------------------------------------------------------------------------------- /04/diy-factorial-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 팩토리얼 계산하기 8 | 9 | 10 | 11 | 23 | 24 | -------------------------------------------------------------------------------- /06/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | memeber 객체 7 | 10 | 11 | 12 | 19 | 20 | -------------------------------------------------------------------------------- /02/change-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 글자색 바꾸기 8 | 9 | 10 | 11 |

자바스크립트

12 |

위 텍스트를 클릭해 보세요

13 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /02/change-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 글자색 바꾸기 8 | 9 | 10 | 11 |

자바스크립트

12 |

위 텍스트를 클릭해 보세요

13 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /실전프로젝트/slideShow/slideshow-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Slideshow 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 21 | -------------------------------------------------------------------------------- /07/js/sol-2.js: -------------------------------------------------------------------------------- 1 | var quotes = []; 2 | quotes[0] = "당신은 지금도 최고고, 이전에도 최고였으며 앞으로도 최고일 것입니다."; 3 | quotes[1] = "성공하는 사람은 실패하는데 익숙한 사람이다."; 4 | quotes[2] = "후회를 최대한 이용하라. 깊이 후회한다는 것은 새로운 삶은 산다는 것이다."; 5 | quotes[3] = "가짜 친구는 소문을 믿고 진짜 친구는 나를 믿는다."; 6 | quotes[4] = "성공이라는 못을 박으려면 끈질김이라는 망치가 필요하다."; 7 | quotes[5] = "인생이란 결코 공평하지 않다. 이 사실에 익숙해져라."; 8 | quotes[6] = "'언젠가'라는 날은 영원히 오지 않는다."; 9 | quotes[7] = "문제점을 찾지 말고 해결책을 찾으라."; 10 | quotes[8] = "착한 일은 작다 해서 아니하지 말고, 악한 일은 작다 해도 하지 말라."; 11 | quotes[9] = "자존심은 어리석은 자의 소유물이다"; 12 | 13 | var index = Math.floor(Math.random() * 10); 14 | document.write("

"" + quotes[index] + ""

") -------------------------------------------------------------------------------- /07/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 8 | 9 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /08/domEvent1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 이벤트 처리하기 8 | 9 | 10 | 11 |
12 | 13 |
14 | 20 | 21 | -------------------------------------------------------------------------------- /08/register.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /06/js/book-result.js: -------------------------------------------------------------------------------- 1 | function Book(title, author, volume, price) { 2 | this.title = title; // 책 제목 3 | this.author = author; // 저자 4 | this.volume = volume; // 분량 5 | this.price = price; // 가격 6 | } 7 | 8 | var html = new Book('웹 표준의 정석', 'Ko', '608', '28,000'); 9 | var youtube = new Book('유튜브 영상 만들기', 'Kim', '368', '16,000'); 10 | var python = new Book('점프 투 파이썬', 'Park', '352', '18,800'); 11 | 12 | var bookList = [html, youtube, python]; 13 | 14 | document.write("

책 제목으로 살펴보기

"); 15 | for(var i=0; i" + bookList[i].title + "

"); 17 | } -------------------------------------------------------------------------------- /10/popup-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | location 객체 7 | 8 | 9 | 10 |
11 |

공지사항

12 |

팝업 창에 표시되는 내용

13 |

팝업 창에 표시되는 내용

14 |

팝업 창에 표시되는 내용

15 |

팝업 창에 표시되는 내용

16 |

팝업 창에 표시되는 내용

17 | 18 |

창닫기

19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /04/multi3-temp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 3의 배수인지 확인 8 | 9 | 10 | 11 |
12 | 13 | 23 | 24 | -------------------------------------------------------------------------------- /07/diy-itemList-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 여행 준비물 점검 목록 7 | 8 | 9 | 10 | 11 |
12 |

여행 준비물 점검 목록

13 |
14 | 15 | 16 |
17 |
18 |
19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /08/domEvent2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 이벤트 처리하기 8 | 9 | 10 | 11 |
12 | 13 |
14 | 22 | 23 | -------------------------------------------------------------------------------- /04/even-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 짝수 더하기 8 | 9 | 10 | 11 |

짝수끼리 더하기

12 |
13 | 26 | 27 | -------------------------------------------------------------------------------- /08/diy-register.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /04/diy-gugudan-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 구구단 연습 8 | 9 | 10 | 11 |

구구단

12 | 22 | 23 | -------------------------------------------------------------------------------- /04/gugudan-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 구구단 - for문 8 | 9 | 10 | 11 |

구구단

12 | 22 | 23 | -------------------------------------------------------------------------------- /04/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 3의 배수 찾기 8 | 14 | 15 | 16 |

3의 배수 찾기

17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /09/css/sol-2.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | text-align: center; 3 | } 4 | #calc { 5 | width:300px; 6 | margin:50px auto; 7 | } 8 | #start { 9 | border:1px solid #222; 10 | background-color:#eee; 11 | border-radius:5px; 12 | margin-left:10px; 13 | padding:15px 30px; 14 | } 15 | hr { 16 | width:300px; 17 | margin-left:0; 18 | margin-top:30px; 19 | margin-bottom:40px; 20 | } 21 | input[type="text"] { 22 | height:50px; 23 | border:2px solid #222; 24 | border-radius:10px; 25 | padding-left:20px; 26 | } 27 | #radius{ 28 | width:150px; 29 | } 30 | #round, #area { 31 | width:300px; 32 | } 33 | #calc > p { 34 | line-height:40px; 35 | } -------------------------------------------------------------------------------- /04/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 짝수일까, 홀수일까 8 | 14 | 15 | 16 |

짝수일까, 홀수일까

17 | 18 | 28 | 29 | -------------------------------------------------------------------------------- /07/css/list.css: -------------------------------------------------------------------------------- 1 | form::after { 2 | content:""; 3 | display:table; 4 | clear:both; 5 | } 6 | ul{ 7 | margin:0; 8 | padding:0; 9 | list-style: none; 10 | } 11 | ul li{ 12 | cursor:pointer; 13 | position:relative; 14 | padding:12px 8px 12px 40px; 15 | background: #eee; 16 | font-size:18px; 17 | transition: 0.2s; 18 | } 19 | ul li:nth-child(odd) { 20 | background-color:#f9f9f9; 21 | } 22 | ul li:hover { 23 | background-color:#ddd; 24 | } 25 | .close { 26 | position:absolute; 27 | right:0; 28 | top:0; 29 | padding:12px 16px; 30 | border:none; 31 | background:rgba(255,255,255,0) 32 | } 33 | .close:hover { 34 | background-color:#007acc; 35 | color:white; 36 | } -------------------------------------------------------------------------------- /08/register-create.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /08/register-insert.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /09/reg.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 회원 가입 9 | 10 | 11 |
12 |

로그인

13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 |
21 |
22 |
23 | 24 | -------------------------------------------------------------------------------- /03/age-temp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 나이 계산하기 8 | 9 | 10 | 11 | 12 |
(결과 값 표시)
13 | 22 | 23 | -------------------------------------------------------------------------------- /08/domCss2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM CSS 8 | 22 | 23 | 24 |
25 |

도형 위로 마우스 포인터를 올려놓으세요.

26 |
27 |
28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /05/event.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 | 14 |
15 |

민들레

16 |

어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /08/register-delete.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /08/register-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /05/diy-event.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 | 14 |
15 |

민들레

16 |

어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /08/diy-register-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM - Create & Add Node 8 | 9 | 10 | 11 |
12 |

참가 신청

13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /03/age-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 나이 계산하기 8 | 9 | 10 | 11 | 12 |
(결과 값 표시)
13 | 22 | 23 | -------------------------------------------------------------------------------- /05/event-handler.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 | 14 |
15 |

민들레

16 |

어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /07/css/input.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing:border-box; 3 | } 4 | #wrapper { 5 | width:600px; 6 | margin:0 auto; 7 | } 8 | h2 { 9 | text-align:center; 10 | } 11 | form { 12 | background-color:#007acc; 13 | padding:30px 40px; 14 | color:white; 15 | text-align:center; 16 | } 17 | input { 18 | border:none; 19 | width:440px; 20 | padding:10px; 21 | float:left; 22 | font-size:16px; 23 | } 24 | .addBtn { 25 | padding:10px; 26 | width:50px; 27 | border:none; 28 | background-color:#fff; 29 | box-shadow:1px 2px 4px #167dae; 30 | color:#555; 31 | text-align:center; 32 | font-size:14px; 33 | cursor:pointer; 34 | transition:0.3; 35 | } 36 | form::after { 37 | content:""; 38 | display:table; 39 | clear:both; 40 | } -------------------------------------------------------------------------------- /03/css/bargain.css: -------------------------------------------------------------------------------- 1 | #contents { 2 | width: 450px; 3 | margin:0 auto; 4 | } 5 | #contents > img { 6 | float:left; 7 | margin-right:25px; 8 | } 9 | ul { 10 | list-style: none; 11 | padding-top:40px; 12 | } 13 | li { 14 | margin-bottom:10px; 15 | } 16 | li > label { 17 | width:80px; 18 | float:left; 19 | text-align:right; 20 | } 21 | input[type="text"] { 22 | width:110px; 23 | padding:5px 10px; 24 | margin:0 5px 0 10px; 25 | } 26 | li:nth-child(3) { 27 | margin-top:20px; 28 | text-align: center; 29 | } 30 | button { 31 | padding:5px 10px; 32 | border:1px solid #ccc; 33 | font-size:1em; 34 | } 35 | #showResult { 36 | margin-top:20px; 37 | font-size:1.5em; 38 | } -------------------------------------------------------------------------------- /10/current.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 현재 시각은? 8 | 19 | 20 | 21 |
22 | 30 | 31 | -------------------------------------------------------------------------------- /실전프로젝트/upAndDown/upAndDown.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 숫자 맞히기 6 | 7 | 8 | 9 | 10 |
11 |

숫자 맞히기 게임

12 |

1에서 100 사이의 수를 입력하세요.

13 |
14 | 15 | 16 | 17 |
18 |
19 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /03/bargain.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 할인 가격 구하기 8 | 9 | 10 | 11 |
12 | 13 |
    14 |
  • 15 | 16 | 원 17 |
  • 18 |
  • 19 | 20 | % 21 |
  • 22 |
  • 23 | 24 |
  • 25 |
26 |
27 |
28 | 29 | -------------------------------------------------------------------------------- /03/diy-bargain.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 할인 가격 구하기 8 | 9 | 10 | 11 |
12 | 13 |
    14 |
  • 15 | 16 | 원 17 |
  • 18 |
  • 19 | 20 | % 21 |
  • 22 |
  • 23 | 24 |
  • 25 |
26 |
27 |
28 | 29 | -------------------------------------------------------------------------------- /05/event-handler-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 | 14 |
15 |

민들레

16 |

어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /09/quiz-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 2 8 | 9 | 10 | 11 |

원 둘레과 넓이 계산

12 |
13 |
14 |
15 |

반지름 :
16 | 17 | 계산 18 |

19 |
20 |

원둘레 :
21 | 22 |

23 |

원넓이 :
24 | 25 |

26 |
27 |
28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /03/css/quiz.css: -------------------------------------------------------------------------------- 1 | 2 | #contents { 3 | width:500px; 4 | margin:0 auto; 5 | } 6 | ul { 7 | list-style: none; 8 | padding-top:40px; 9 | } 10 | li { 11 | clear:left; 12 | margin-bottom:10px; 13 | } 14 | li > label { 15 | width:150px; 16 | float:left; 17 | text-align:right; 18 | } 19 | input[type="text"] { 20 | width:110px; 21 | padding:5px 10px; 22 | margin:0 5px 0 10px; 23 | } 24 | li:nth-child(3) { 25 | margin-top:20px; 26 | text-align: center; 27 | } 28 | button { 29 | width:400px; 30 | margin:auto; 31 | padding:10px; 32 | border:1px solid #ccc; 33 | font-size:1em; 34 | } 35 | #result { 36 | width:400px; 37 | padding:10px; 38 | margin-top:20px; 39 | font-size:1.2em; 40 | text-align:center; 41 | } -------------------------------------------------------------------------------- /04/switch-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 세션 선택 8 | 9 | 10 | 11 | 24 | 25 | -------------------------------------------------------------------------------- /09/sol-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 2 8 | 9 | 10 | 11 |

원 둘레과 넓이 계산

12 |
13 |
14 |
15 |

반지름 :
16 | 17 | 계산 18 |

19 |
20 |

원둘레 :
21 | 22 |

23 |

원넓이 :
24 | 25 |

26 |
27 |
28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /08/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 1 8 | 15 | 16 | 17 |

Ipsum quis consectetur sint ullamco.

18 |

Labore do officia velit mollit eu pariatur. Do aute sunt aute dolore labore incididunt Lorem mollit laborum adipisicing. Ipsum adipisicing amet ut in. Lorem incididunt sunt et excepteur amet occaecat culpa incididunt exercitation. Labore excepteur Lorem voluptate ipsum magna consequat eiusmod ex anim labore pariatur eiusmod. Excepteur amet non magna est.

19 | 20 | -------------------------------------------------------------------------------- /실전프로젝트/converter/converter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 단위 변환기 8 | 9 | 10 | 11 |
12 |

섭씨 ⟺ 화씨 온도 변환기

13 |
14 |
15 | 16 | 17 |
18 | 19 |
20 | 21 | 22 |
23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /05/event-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 | 14 |
15 |

민들레

16 |

어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

17 | 18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /09/css/register.css: -------------------------------------------------------------------------------- 1 | #container{ 2 | width:600px; 3 | margin:0 auto; 4 | } 5 | ul { 6 | list-style:none; 7 | } 8 | ul li { 9 | clear:both; 10 | } 11 | .field { 12 | float:left; 13 | width:100px; 14 | font-weight:bold; 15 | font-size:0.9em; 16 | line-height: 55px; 17 | text-align:right; 18 | margin-right:15px; 19 | } 20 | input[type="text"], input[type="password"], input[type="email"] { 21 | float:left; 22 | width:350px; 23 | height:35px; 24 | border:1px solid #aaa; 25 | border-radius:5px; 26 | padding:5px; 27 | margin:10px 0; 28 | float:left; 29 | } 30 | 31 | .r { 32 | line-height:55px; 33 | } 34 | 35 | #buttons > li { 36 | display:inline-block; 37 | } 38 | button { 39 | width:250px; 40 | height:50px; 41 | margin-right:10px; 42 | border:1px solid #ccc; 43 | background:#eee; 44 | font-size:0.9em; 45 | } -------------------------------------------------------------------------------- /05/diy-event-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
12 | 13 | 14 |
15 |

민들레

16 |

어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

17 | 18 |
19 |
20 | 21 | > 22 | 23 | -------------------------------------------------------------------------------- /08/dom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 |
13 |

상품 정보

14 |
    15 |
  • 원산지 : 에디오피아
  • 16 |
  • 지 역 : 이르가체프 코체레
  • 17 |
  • 농 장 : 게뎁
  • 18 |
  • 고 도 : 1,950 ~ 2,000 m
  • 19 |
  • 품 종 : 지역 토착종
  • 20 |
  • 가공법 : 워시드
  • 21 |
22 |

상세 설명

23 |

2차 세계대전 이후 설립된 게뎁 농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 24 | 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티 커피를 생산합니다.

25 |

커피의 풍미

26 |

은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /10/locationObject.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | location Object 8 | 9 | 10 | 11 |
12 |

location 객체

13 |
14 | 19 |
20 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /실전프로젝트/upAndDown/upAndDown-resutl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 숫자 맞히기 6 | 7 | 8 | 9 | 10 |
11 |

숫자 맞히기 게임

12 |

1에서 100 사이의 수를 입력하세요.

13 |
14 | 15 | 16 | 17 |
18 |
19 | 20 |
21 | 29 | 30 | -------------------------------------------------------------------------------- /09/js/order-result.js: -------------------------------------------------------------------------------- 1 | var check = document.querySelector("#shippingInfo"); // 체크박스의 id는 shippingInfo 2 | 3 | check.addEventListener("click", function() { // check 요소에 click 이벤트가 발생했을 때 실행할 함수 4 | if(check.checked == true) { // 체크되었다면 5 | document.querySelector("#shippingName").value = document.querySelector("#billingName").value; // 주문 정보(이름)를 배송 정보(이름)에 복사 6 | document.querySelector("#shippingTel").value = document.querySelector("#billingTel").value; // 주문 정보(전화번호)를 배송 정보(전화번호)에 복사 7 | document.querySelector("#shippingAddr").value = addrInfo = document.querySelector("#billingAddr").value; // 주문 정보(주소)를 배송 정보(주소)에 복사 8 | } 9 | else { // 체크되어 있지 않다면 배송 정보 필드를 지움. 10 | document.querySelector("#shippingName").value = ""; 11 | document.querySelector("#shippingTel").value = ""; 12 | document.querySelector("#shippingAddr").value = ""; 13 | } 14 | }); -------------------------------------------------------------------------------- /08/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 1 8 | 15 | 16 | 17 |

Ipsum quis consectetur sint ullamco.

18 |

Labore do officia velit mollit eu pariatur. Do aute sunt aute dolore labore incididunt Lorem mollit laborum adipisicing. Ipsum adipisicing amet ut in. Lorem incididunt sunt et excepteur amet occaecat culpa incididunt exercitation. Labore excepteur Lorem voluptate ipsum magna consequat eiusmod ex anim labore pariatur eiusmod. Excepteur amet non magna est.

19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /10/browser.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | browser 객체 6 | 7 | 8 | 9 | 10 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /08/js/product-result.js: -------------------------------------------------------------------------------- 1 | var isOpen = false; 2 | var bigPic = document.querySelector("#cup"); 3 | var smallPics = document.querySelectorAll(".small"); 4 | 5 | for(i=0; i 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 2 8 | 25 | 26 | 27 |

할 일 목록

28 |
    29 |
  • 할 일 1
  • 30 |
  • 할 일 2
  • 31 |
  • 할 일 3
  • 32 |
  • 할 일 4
  • 33 |
  • 할 일 5
  • 34 |
35 | 36 | -------------------------------------------------------------------------------- /03/css/age.css: -------------------------------------------------------------------------------- 1 | body { 2 | /* background:url('images/bg-1.jpg') no-repeat fixed; 3 | background-size:cover; */ 4 | text-align:center; 5 | } 6 | .btn { 7 | margin-top:50px; 8 | font-weight: 400; 9 | color:#fff; 10 | background-color:#007bff; 11 | text-align: center; 12 | white-space: nowrap; 13 | vertical-align: middle; 14 | border: 1px solid transparent; 15 | padding: 0.375rem 0.75rem; 16 | font-size: 1rem; 17 | line-height: 1.5; 18 | border-color:#007bff; 19 | border-radius: 0.25rem; 20 | transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; 21 | } 22 | .btn:hover { 23 | color:#fff; 24 | background-color:#218838; 25 | border-color:#1e7e34; 26 | } 27 | .show { 28 | margin-top: 50px; 29 | padding:20px 30px; 30 | border-top:1px solid #ccc; 31 | border-bottom:1px solid #ccc; 32 | } -------------------------------------------------------------------------------- /08/acessDom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM에 접근하기 8 | 9 | 10 | 11 |
12 |

에디오피아 게뎁

13 |
14 | 에디오피아 게뎁 15 |
16 |
17 |

Information

18 |

2차 세계대전 이후 설립된 게뎁농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티커피를 생산합니다.

19 |

Flavor Note

20 |

은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

21 |
22 |
23 | 24 | -------------------------------------------------------------------------------- /09/js/signup.js: -------------------------------------------------------------------------------- 1 | var userId = document.querySelector("#user-id"); // ‘아이디’ 필드를 가져와 변수에 저장 2 | var pw1 = document.querySelector("#user-pw1"); // ‘비밀번호’ 필드를 가져와 변수에 저장 3 | var pw2 = document.querySelector("#user-pw2"); // ‘비밀번호 확인’ 필드를 가져와 변수에 저장 4 | 5 | function checkId() { 6 | if (userId.value.length < 4 || userId.value.length > 15) { // userId 필드 내용의 길이가 4 이하이거나 15 이상일 경우 실행 7 | alert("4~15자리의 영문과 숫자를 사용하세요."); // 오류 메시지 출력 8 | userId.select(); 9 | } 10 | } 11 | 12 | function checkPw() { 13 | if (pw1.value.length < 8) { 14 | alert("비밀번호는 8자리 이상이어야 합니다."); // 오류 메시지 표시 15 | pw1.value = ""; // ‘비밀번호’ 필드 지움 16 | pw1.focus(); // 비밀번호를 다시 입력할 수 있게 포커싱 17 | } 18 | } 19 | 20 | function comparePw() { 21 | if(pw1.value != pw2.value) { 22 | alert("암호가 다릅니다. 다시 입력하세요."); 23 | pw2.value = ""; // ‘비밀번호 확인’ 필드 지움 24 | pw2.focus(); // 비밀번호를 다시 입력할 수 있게 포커싱 25 | } 26 | } -------------------------------------------------------------------------------- /09/js/signup-result.js: -------------------------------------------------------------------------------- 1 | var userId = document.querySelector("#user-id"); // ‘아이디’ 필드를 가져와 변수에 저장 2 | var pw1 = document.querySelector("#user-pw1"); // ‘비밀번호’ 필드를 가져와 변수에 저장 3 | var pw2 = document.querySelector("#user-pw2"); // ‘비밀번호 확인’ 필드를 가져와 변수에 저장 4 | 5 | function checkId() { 6 | if (userId.value.length < 4 || userId.value.length > 15) { // userId 필드 내용의 길이가 4 이하이거나 15 이상일 경우 실행 7 | alert("4~15자리의 영문과 숫자를 사용하세요."); // 오류 메시지 출력 8 | userId.select(); 9 | } 10 | } 11 | 12 | function checkPw() { 13 | if (pw1.value.length < 8) { 14 | alert("비밀번호는 8자리 이상이어야 합니다."); // 오류 메시지 표시 15 | pw1.value = ""; // ‘비밀번호’ 필드 지움 16 | pw1.focus(); // 비밀번호를 다시 입력할 수 있게 포커싱 17 | } 18 | } 19 | 20 | function comparePw() { 21 | if(pw1.value != pw2.value) { 22 | alert("암호가 다릅니다. 다시 입력하세요."); 23 | pw2.value = ""; // ‘비밀번호 확인’ 필드 지움 24 | pw2.focus(); // 비밀번호를 다시 입력할 수 있게 포커싱 25 | } 26 | } -------------------------------------------------------------------------------- /실전프로젝트/converter/converter-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 단위 변환기 8 | 9 | 10 | 11 |
12 |

섭씨 ⟺ 화씨 온도 변환기

13 |
14 |
15 | 16 | 17 |
18 | 19 |
20 | 21 | 22 |
23 |
24 |
25 | 37 | 38 | -------------------------------------------------------------------------------- /09/css/order.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin:0; 3 | padding:0; 4 | box-sizing: border-box; 5 | } 6 | ul { 7 | list-style: none; 8 | } 9 | legend { 10 | font-size:1.2em; 11 | font-weight:bold; 12 | margin-left:20px; 13 | } 14 | 15 | form { 16 | width:520px; 17 | height:auto; 18 | padding-left:10px; 19 | margin:50px auto; 20 | } 21 | fieldset { 22 | border:1px solid #c0c0c0; 23 | padding:30px 20px 30px 30px; 24 | margin-bottom:35px; 25 | } 26 | 27 | .field { 28 | float:left; 29 | width:60px; 30 | font-weight:bold; 31 | font-size:0.9em; 32 | line-height: 55px; 33 | text-align:right; 34 | margin-right:15px; 35 | } 36 | 37 | .input-box { 38 | width:350px; 39 | height:35px; 40 | border:1px solid #aaa; 41 | border-radius:5px; 42 | padding:5px; 43 | margin:10px 0; 44 | float:left; 45 | } 46 | 47 | .order { 48 | width:100%; 49 | padding:20px; 50 | border:1px solid #aaa; 51 | background:#e9e9e9; 52 | font-size:1em; 53 | font-weight:bold; 54 | } 55 | -------------------------------------------------------------------------------- /09/js/shipment-result.js: -------------------------------------------------------------------------------- 1 | var check = document.querySelector("#shippingInfo"); // 체크박스의 id는 shippingInfo 2 | 3 | check.addEventListener("click", function() { // check 요소에 click 이벤트가 발생했을 때 실행할 함수 4 | var nameInfo = document.querySelector("#billingName").value; // 주문 정보 - 이름 5 | var telInfo = document.querySelector("#billingTel").value; // 주문 정보 - 전화번호 6 | var addrInfo = document.querySelector("#billingAddr").value; // 주문 정보 - 주소 7 | 8 | if(check.checked == true) { // 체크되었다면 9 | document.querySelector("#shippingName").value = nameInfo; // 주문 정보(이름)를 배송 정보(이름)에 복사 10 | document.querySelector("#shippingTel").value = telInfo; // 주문 정보(전화번호)를 배송 정보(전화번호)에 복사 11 | document.querySelector("#shippingAddr").value = addrInfo; // 주문 정보(주소)를 배송 정보(주소)에 복사 12 | } 13 | else { // 체크되어 있지 않다면 배송 정보 필드를 지움. 14 | document.querySelector("#shippingName").value = ""; 15 | document.querySelector("#shippingTel").value = ""; 16 | document.querySelector("#shippingAddr").value = ""; 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /06/js/diy-dday-result.js: -------------------------------------------------------------------------------- 1 | var now = new Date(); 2 | var firstDay = new Date("2018-03-23"); 3 | var toNow = now.getTime(); 4 | var toFirst = firstDay.getTime(); 5 | var passedTime = toNow - toFirst; 6 | var passedDay = Math.round(passedTime/(24*60*60*1000)); 7 | document.querySelector('#accent').innerText = passedDay + "일"; 8 | 9 | calcDate(100); // 100일 기념일을 계산해서 표시합니다. 10 | calcDate(200); // 200일 기념일을 계산해서 표시합니다. 11 | calcDate(365); // 1년 기념일을 계산해서 표시합니다. 12 | calcDate(500); // 500일 기념일을 계산해서 표시합니다. 13 | 14 | function calcDate(days) { 15 | var future = toFirst + days*(1000*60*60*24); // 처음 만난 날에 밀리초로 바꾼 100일을 더합니다. 16 | var someday = new Date(future); // future 값을 사용해 Date 객체의 인스턴스를 만듭니다. 17 | var year = someday.getFullYear( ); // ‘연도’를 가져와 year 변수에 저장합니다. 18 | var month = someday.getMonth( ) + 1; // ‘월’을 가져와 month 변수에 저장합니다. 19 | var date = someday.getDate( ); // ‘일’을 가져와 date 변수에 저장합니다. 20 | document.querySelector("#date"+days).innerText = year + "년 " + month + "월 " + date + "일"; 21 | } 22 | -------------------------------------------------------------------------------- /09/js/shipment.js: -------------------------------------------------------------------------------- 1 | var check = document.querySelector("#shippingInfo"); // 체크박스의 id는 shippingInfo 2 | 3 | var nameInfo = document.querySelector("#billingName").value; // 주문 정보 - 이름 4 | var telInfo = document.querySelector("#billingTel").value; // 주문 정보 - 전화번호 5 | var addrInfo = document.querySelector("#billingAddr").value; // 주문 정보 - 주소 6 | 7 | check.addEventListener("click", function() { // check 요소에 click 이벤트가 발생했을 때 실행할 함수 8 | if(check.checked == true) { // 체크되었다면 9 | document.querySelector("#shippingName").value = nameInfo; // 주문 정보(이름)를 배송 정보(이름)에 복사 10 | document.querySelector("#shippingTel").value = telInfo; // 주문 정보(전화번호)를 배송 정보(전화번호)에 복사 11 | document.querySelector("#shippingAddr").value = addrInfo; // 주문 정보(주소)를 배송 정보(주소)에 복사 12 | } 13 | else { // 체크되어 있지 않다면 배송 정보 필드를 지움. 14 | document.querySelector("#shippingName").value = ""; 15 | document.querySelector("#shippingTel").value = ""; 16 | document.querySelector("#shippingAddr").value = ""; 17 | } 18 | }); -------------------------------------------------------------------------------- /03/bargain-temp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 할인 가격 구하기 8 | 9 | 10 | 11 |
12 | 13 |
    14 |
  • 15 | 16 | 원 17 |
  • 18 |
  • 19 | 20 | % 21 |
  • 22 |
  • 23 | 24 |
  • 25 |
26 |
27 |
28 | 29 | 36 | 37 | -------------------------------------------------------------------------------- /실전프로젝트/converter/js/converter-result.js: -------------------------------------------------------------------------------- 1 | var sUnit = document.querySelector("#s-unit"); // 왼쪽 텍스트 필드 옆에 표시하는 단위 2 | var tUnit = document.querySelector("#t-unit"); // 오른쪽 텍스트 필드 옆에 표시하는 단위 3 | var cToF = true; // 섭씨에서 화씨로 변환 4 | 5 | var source = document.querySelector("#s-value"); // 왼쪽 필드 6 | var target = document.querySelector("#t-value"); // 오른쪽 필드 7 | 8 | function exUnit() { 9 | source.value = ""; // 왼쪽 텍스트 필드 값 지움 10 | target.value = ""; // 오른쪽 텍스트 필드 값 지움 11 | 12 | if (cToF) { 13 | cToF = false; // 화씨 -> 섭씨 변환 14 | sUnit.innerHTML = "℉"; // 화씨 기호 15 | tUnit.innerHTML = "℃"; // 섭씨 기호 16 | } 17 | else { 18 | cToF = true; // 섭씨 -> 화씨 변환 19 | sUnit.innerHTML = "℃"; // 섭씨 기호 20 | tUnit.innerHTML = "℉"; // 화씨 기호 21 | } 22 | } 23 | 24 | function converter() { 25 | if(cToF) { 26 | target.value = (source.value * 1.8 + 32).toFixed(2); // 섭씨 -> 화씨 계산 27 | } 28 | else { 29 | target.value = ((source.value - 32) / 1.8).toFixed(2); // 화씨 -> 섭씨 계산 30 | } 31 | } -------------------------------------------------------------------------------- /09/js/register-result.js: -------------------------------------------------------------------------------- 1 | var userId = document.querySelector("#user-id"); // ‘아이디’ 필드를 가져와 변수에 저장 2 | var pw1 = document.querySelector("#user-pw1"); // ‘비밀번호’ 필드를 가져와 변수에 저장 3 | var pw2 = document.querySelector("#user-pw2"); // ‘비밀번호 확인’ 필드를 가져와 변수에 저장 4 | 5 | userId.onchange = checkId; 6 | pw1.onchange = checkPw; 7 | pw2.onchange = comparePw; 8 | 9 | function checkId() { 10 | if (userId.value.length < 4 || userId.value.length > 15) { // userId 필드 내용의 길이가 4 이하이거나 15 이상일 경우 실행 11 | alert("4~15자리의 영문과 숫자를 사용하세요."); // 오류 메시지 출력 12 | userId.select(); // 다시 입력할 수 있도록 userId 필드 선택 13 | } 14 | } 15 | 16 | function checkPw() { 17 | if (pw1.value.length < 8) { 18 | alert("비밀번호는 8자리 이상이어야 합니다."); // 오류 메시지 표시 19 | pw1.value = ""; // ‘비밀번호’ 필드 지움 20 | pw1.focus(); // 비밀번호를 다시 입력할 수 있게 포커싱 21 | } 22 | } 23 | 24 | function comparePw() { 25 | if(pw1.value != pw2.value) { 26 | alert("암호가 다릅니다. 다시 입력하세요."); 27 | pw2.value = ""; // ‘비밀번호 확인’ 필드 지움 28 | pw2.focus(); // 비밀번호를 다시 입력할 수 있게 포커싱 29 | } 30 | } -------------------------------------------------------------------------------- /04/for-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 중첩된 for 문 8 | 9 | 10 | 11 | 41 | 42 | -------------------------------------------------------------------------------- /실전프로젝트/slideShow/js/slideshow-result.js: -------------------------------------------------------------------------------- 1 | var slides = document.querySelectorAll("#container > img"); // 이미지들을 저장한 배열 2 | var prev = document.querySelector("#prev"); // 이전 버튼 3 | var next = document.querySelector("#next"); // 다음 버튼 4 | var current = 0; // 표시할 이미지 위치 5 | 6 | showSlide(current); // showSlide( ) 함수를 실행해 current 위치의 이미지 표시 7 | prev.onclick = prevSlide; // prev를 클릭하면 prevSlide 함수 실행 8 | next.onclick = nextSlide; // next를 클릭하면 nextSlide 함수 실행 9 | 10 | function showSlide(n) { 11 | for(var i=0; i 0) current -= 1; // 현재 이미지가 첫번째가 아닐 경우, -1 위치로 19 | else current = slides.length - 1; // 현재 이미지가 첫번째라면 마지막으로 20 | showSlide(current); // 이동한 위치의 이미지 표시 21 | } 22 | 23 | function nextSlide() { 24 | if (current < slides.length -1) current += 1; // 현재 이미지가 마지막이 아니라면 +1 위치로 25 | else current = 0; // 현재 이미지가 마지막이라면 첫번째 위치로 26 | showSlide(current); // 이동한 위치의 이미지 표시 27 | } -------------------------------------------------------------------------------- /08/css/dom.css: -------------------------------------------------------------------------------- 1 | #container { /* id="container"인 요소에 적용할 스타일 */ 2 | width:800px; 3 | height:500px; 4 | margin:0 auto; 5 | padding:20px 10px 0 50px;; 6 | border:1px solid #ccc; 7 | } 8 | #prod-img, #desc { /* id="prod-img"인 요소와 id="desc"인 요소에 공통으로 적용할 스타일 */ 9 | float:left; 10 | } 11 | #prod-img { /* id="desc"인 요소에 적용할 스타일 */ 12 | margin:20px 50px auto 10px; 13 | } 14 | #prod-img img { /* id="desc"인 요소의 하위 요소 중 img 요소에 적용할 스타일 */ 15 | border:1px solid #ccc; 16 | outline:1px dashed rgb(253, 186, 0); 17 | outline-offset: -7px; 18 | } 19 | #desc { /* id="desc"인 요소에 적용할 스타일 */ 20 | width:300px; 21 | } 22 | h1 { /* h1 요소에 적용할 스타일 */ 23 | font-size:1.8em; 24 | } 25 | h2 { /* h2 요소에 적용할 스타일 */ 26 | font-size:1.3em; 27 | color:#222; 28 | } 29 | p { /* p 요소에 적용할 스타일 */ 30 | font-size:0.9em; 31 | line-height:1.4; 32 | text-align: justify; 33 | } 34 | .accent { 35 | font-weight:700; 36 | font-size:1.0em; 37 | font-style:italic; 38 | } 39 | .bright { /* class="bright"인 요소에 적용할 스타일 */ 40 | color:blue; 41 | } -------------------------------------------------------------------------------- /06/dday.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | -------------------------------------------------------------------------------- /06/diy-dday.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | -------------------------------------------------------------------------------- /05/css/d-day.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Marko+One'); 2 | 3 | .container{ 4 | width:500px; 5 | margin:0 auto; 6 | background:url(images/heart.png) no-repeat 5px -100px; 7 | background-size:500px; 8 | border:1px solid #ccc; 9 | border-radius:2%; 10 | box-shadow:2px 2px 5px #333; 11 | } 12 | .day1{ 13 | padding-top:50px; 14 | text-align:center; 15 | } 16 | .day1 p { 17 | font-size:1.4em; 18 | color:#666; 19 | } 20 | .accent{ 21 | margin-left:10px; 22 | margin-right:10px; 23 | font-family: 'Marko One', serif; 24 | font-size:2.5em; 25 | color:#00B300; 26 | text-shadow:1px 2px 1px #222; 27 | } 28 | .day2 { 29 | width:480px; 30 | margin:240px auto 20px auto; 31 | } 32 | .day2 ul { 33 | list-style: none; 34 | border-bottom:1px dashed #ccc; 35 | height:100px; 36 | } 37 | .item-title { 38 | float:left; 39 | width:160px; 40 | font-weight:bold; 41 | font-size:1.8em; 42 | line-height:100px; 43 | } 44 | .item-date { 45 | float:left; 46 | margin-left:60px; 47 | font-size:1.2em; 48 | color:#222; 49 | text-align:right; 50 | line-height:100px; 51 | } -------------------------------------------------------------------------------- /06/css/d-day-old.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Marko+One'); 2 | 3 | .container{ 4 | width:500px; 5 | margin:0 auto; 6 | background:url(images/heart.png) no-repeat 5px -100px; 7 | background-size:500px; 8 | border:1px solid #ccc; 9 | border-radius:2%; 10 | box-shadow:2px 2px 5px #333; 11 | } 12 | .day1{ 13 | padding-top:50px; 14 | text-align:center; 15 | } 16 | .day1 p { 17 | font-size:1.4em; 18 | color:#666; 19 | } 20 | .accent{ 21 | margin-left:10px; 22 | margin-right:10px; 23 | font-family: 'Marko One', serif; 24 | font-size:2.5em; 25 | color:#00B300; 26 | text-shadow:1px 2px 1px #222; 27 | } 28 | .day2 { 29 | width:480px; 30 | margin:240px auto 20px auto; 31 | } 32 | .day2 ul { 33 | list-style: none; 34 | border-bottom:1px dashed #ccc; 35 | height:100px; 36 | } 37 | .item-title { 38 | float:left; 39 | width:160px; 40 | font-weight:bold; 41 | font-size:1.8em; 42 | line-height:100px; 43 | } 44 | .item-date { 45 | float:left; 46 | margin-left:60px; 47 | text-align:right; 48 | font-size:1.2em; 49 | color:#222; 50 | line-height:100px; 51 | } -------------------------------------------------------------------------------- /08/css/nameList.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:500px; 3 | margin:20px auto; 4 | } 5 | h1 { 6 | font-size:2.5em; 7 | text-align: center 8 | } 9 | form { 10 | margin-top:50px; 11 | } 12 | input[type="text"] { 13 | float:left; 14 | width:300px; 15 | padding:12px; 16 | border:none; 17 | border-bottom:1px solid #ccc; 18 | font-size:20px; 19 | } 20 | input:focus { 21 | outline: none; 22 | } 23 | button { 24 | width:100px; 25 | border:1px solid #ccc; 26 | border-radius:7px; 27 | padding:12px; 28 | margin-left:30px; 29 | font-size:20px; 30 | } 31 | button:hover { 32 | background-color:#ccc; 33 | } 34 | hr { 35 | clear:both; 36 | visibility: hidden; 37 | } 38 | #nameList > p { 39 | font-size:20px; 40 | text-indent:50px; 41 | line-height: 1.5; 42 | } 43 | .del { 44 | font-size:20px; 45 | text-align: center; 46 | color:#ccc; 47 | background:transparent; 48 | float:right; 49 | margin-right:10px; 50 | } 51 | .del:hover { 52 | color:#222; 53 | cursor: pointer; 54 | } 55 | .del:active { 56 | outline:0; 57 | } -------------------------------------------------------------------------------- /06/dday-temp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /06/dday-100.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /06/diy-dday-temp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /06/dday-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /06/diy-dday-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Day for love 7 | 8 | 9 | 10 |
11 |
12 |

우리 만난지

13 |

며칠?

14 |
15 |
기념일 계산
16 |
17 |
    18 |
  • 100일
  • 19 |
  • 20 |
21 |
    22 |
  • 200일
  • 23 |
  • 24 |
25 |
    26 |
  • 1년
  • 27 |
  • 28 |
29 |
    30 |
  • 500일
  • 31 |
  • 32 |
33 |
34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /06/js/dday-result.js: -------------------------------------------------------------------------------- 1 | var now = new Date(); // 오늘 날짜 정보를 Date 객체의 인스턴스 now 객체로 만듭니다. 2 | var firstDay = new Date("2018-03-23"); // 처음 만난 날의 날짜 정보를 firstDay 객체로 만듭니다. 3 | var toNow = now.getTime(); // 오늘 날짜를 밀리초로 바꿉니다. 4 | var toFirst = firstDay.getTime(); // 처음 만난 날을 밀리초로 바꿉니다. 5 | var passedTime = toNow - toFirst; // 처음 만난 날과 오늘 사이의 차이 (밀리초) 6 | var passedDay = Math.round(passedTime/(24*60*60*1000)); // 밀리초를 일로 변환 후 반올림합니다. 7 | document.querySelector('#accent').innerText = passedDay + "일"; // #accent 영역에 표시합니다. 8 | 9 | calcDate(100); // 100일 기념일을 계산해서 표시합니다. 10 | calcDate(200); // 200일 기념일을 계산해서 표시합니다. 11 | calcDate(365); // 1년 기념일을 계산해서 표시합니다. 12 | calcDate(500); // 500일 기념일을 계산해서 표시합니다. 13 | 14 | function calcDate(days) { 15 | var future = toFirst + days*(1000*60*60*24); // 처음 만난 날에 밀리초로 바꾼 100일을 더합니다. 16 | var someday = new Date(future); // future 값을 사용해 Date 객체의 인스턴스를 만듭니다. 17 | var year = someday.getFullYear( ); // ‘연도’를 가져와 year 변수에 저장합니다. 18 | var month = someday.getMonth( ) + 1; // ‘월’을 가져와 month 변수에 저장합니다. 19 | var date = someday.getDate( ); // ‘일’을 가져와 date 변수에 저장합니다. 20 | document.querySelector("#date"+days).innerText = year + "년 " + month + "월 " + date + "일"; 21 | } 22 | -------------------------------------------------------------------------------- /실전프로젝트/slideShow/css/slideshow.css: -------------------------------------------------------------------------------- 1 | .wrapper { /* 슬라이드 쇼 영역 스타일 */ 2 | width:600px; /* 너비 */ 3 | margin:0 auto; /* 화면 중앙에 배치 */ 4 | position:relative; /* 슬라이드 위치를 잡기 위해 */ 5 | background-color:#ccc; 6 | text-align:center; /* 슬라이드를 화면 중앙에 배치 */ 7 | } 8 | #container { 9 | position:absolute; 10 | } 11 | #container > img { /* 각 이미지의 스타일 */ 12 | width:100%; /* 슬라이드 영역에 꽉 차게 */ 13 | float:left; /* 왼쪽부터 배치 */ 14 | } 15 | button { 16 | position:absolute; /* 배치 방법 : absolute */ 17 | height:100%; /* 버튼 높이를 슬라이드 영역에 꽉 채움 */ 18 | top:0; /* 위로 바짝 붙여서 배치 */ 19 | border:none; /* 테두리 없음 */ 20 | padding:20px; /* 패딩 20px */ 21 | background-color:transparent; /* 투명 배경 */ 22 | color:#000; /* 화살표 색 */ 23 | font-weight:800; /* 진하기 */ 24 | font-size:24px; /* 화살표 크기 */ 25 | opacity:0.5; /* 불투명도 */ 26 | } 27 | #prev { 28 | left:0; /* 왼쪽으로 바짝 붙여서 배치 */ 29 | } 30 | #next { 31 | right:0; /* 오른쪽 바짝 붙여서 배치 */ 32 | } 33 | button:hover { /* 버튼 위로 마우스 오버 했을 때의 스타일 */ 34 | background-color:#222; /* 배경색 */ 35 | color:#fff; /* 화살표 색 */ 36 | opacity:0.6; /* 불투명도 */ 37 | cursor:pointer; /* 마우스 커서 모양 */ 38 | } 39 | button:focus { /* 버튼에 포커싱했을 때 스타일 */ 40 | outline:0; /* 주변 테두리 없애기 */ 41 | } -------------------------------------------------------------------------------- /10/browserCheck.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 브라우저 체크 8 | 9 | 10 |

브라우저 체크

11 | 29 | 30 | -------------------------------------------------------------------------------- /실전프로젝트/upAndDown/keycode.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | keycode 6 | 7 | 22 | 23 | 24 |
25 |

텍스트 필드에 키 입력

26 |
27 | 28 |
29 |

눌린 키 :

30 |

keycode :

31 |
32 | 33 | 42 | 43 | -------------------------------------------------------------------------------- /10/screenObject.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | location Object 8 | 9 | 10 | 11 |
12 |

screen 객체

13 |
14 | 20 |
21 |

window 객체

22 |
23 | 29 |
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Do it! 자바스크립트 기초] 소스 파일 활용 방법 2 | 3 | 4 | ![](https://github.com/funnycom/js-basic-book/blob/master/js-basic.jpeg) 5 | 6 | **현재 깃허브에 올라와 있는 파일은 [Do it! 자바스크립트 기초]의 실습 파일입니다.** 7 | 8 | ----------------------------------------------- 9 | 10 | 11 | ### 깃허브 계정이 있다면 12 | 1. 화면 오른쪽 위에 있는 [Fork] 버튼을 클릭합니다. 13 | 2. 자신의 리포지토리에 복제된 소스를 사용하면 됩니다. 14 | 15 | ![](https://github.com/funnycom/js-basic-book/blob/master/git-1.png) 16 | 17 | ---------------------------------------------- 18 | 19 | ### 깃허브 계정이 없거나 한꺼번에 다운로드하려면 20 | 1. 파일 목록 오른쪽 위에 있는 [Colone or download]를 클릭합니다. 21 | 2. [Download ZIP]을 클릭합니다.js-basic-book-master.zip 라는 파일이 다운로드됩니다. 22 | 3. 원하는 위치에 js-file이라는 폴더를 만들고 그 안에 다운로드한 파일의 압축을 풉니다. 23 | 24 | ![](https://github.com/funnycom/js-basic-book/blob/master/git-2.png) 25 | 26 | ### 파일을 다운로드하는 또다른 방법 27 | 28 | 1. 파일 목록 오른쪽에 있는 [Release] 항목에 [실습 파일]을 클릭합니다. 29 | 2. 실습 파일 목록 중 [Source Code]을 클릭합니다. js-files.zip 라는 파일이 다운로드됩니다. 30 | 3. 원하는 위치에 다운로드한 파일의 압축을 풉니다. 31 | ![](https://github.com/funnycom/js-basic-book/blob/master/git-3.png) 32 | 33 | ---------------------------------------------- 34 | 35 | ### 실전 프로젝트에 도전해 보세요. 36 | 실습 파일에 포함된 '실전 프로젝트' 폴더에는 이 책을 공부한 후에 따라해 볼 수 있는 프로젝트 파일이 담겨 있습니다. 37 | 38 | - 숫자 맞히기 게임 39 | - 이미지 슬라이드 쇼 40 | - 온도 변환기 41 | 42 | 실습 과정을 설명한 PDF 파일을 참고하면서 공부했던 내용을 복습해 볼 수 있습니다. 43 | 44 | 45 | -------------------------------------------------------------------------------- /실전프로젝트/upAndDown/js/upanddown-result.js: -------------------------------------------------------------------------------- 1 | var count = 0; 2 | var randomNumber = Math.floor(Math.random() * 100) + 1; // 컴퓨터 무작위 수 생성 3 | 4 | document.querySelector("#try").onkeypress = function(e) { //키보드 클릭해서 함수 실행 5 | if (e.keyCode == 13 || e.which == 13) { // enter 키인지 체크 6 | finding(); // 함수 실행 7 | return false; // keypress일 때 브라우저가 할 기본 동작 취소 8 | } 9 | } 10 | 11 | function finding() { 12 | var userNumber = document.querySelector("#try").value; // 사용자가 입력한 숫자 가져오기 13 | 14 | if ( userNumber >=1 && userNumber <= 100) { 15 | if (randomNumber > userNumber) { 16 | document.querySelector("#display").innerHTML = " UP!"; // #display 영역에 UP! 표시 17 | } 18 | else if (randomNumber < userNumber) { 19 | document.querySelector("#display").innerHTML = "DOWN!"; // #display 영역에 DOWN! 표시 20 | } 21 | else { 22 | document.querySelector("#display").innerHTML = "맞혔습니다!"; // #display 영역에 맞혔다고 표시. 글자색 지정하는 태그 사용 23 | } 24 | 25 | document.querySelector("#try").value=""; 26 | count++; 27 | document.querySelector("#counter").innerHTML = "시도 횟수 : " + count + "회"; 28 | } 29 | else 30 | alert("1과 100 사이의 숫자를 입력하세요."); 31 | } -------------------------------------------------------------------------------- /09/quiz-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 1 8 | 9 | 10 | 11 |
12 |

피자 주문

13 |
14 |
15 | 사이즈 16 |

Large - 24000 원

17 |
18 |
19 | 추가 주문 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 합계 28 | 29 |
30 |
31 |
32 | 33 | -------------------------------------------------------------------------------- /03/bargain-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 할인 가격 구하기 8 | 9 | 10 | 11 |
12 | 13 |
    14 |
  • 15 | 16 | 원 17 |
  • 18 |
  • 19 | 20 | % 21 |
  • 22 |
  • 23 | 24 |
  • 25 |
26 |
27 |
28 | 29 | 39 | 40 | -------------------------------------------------------------------------------- /03/diy-bargain-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 할인 가격 구하기 8 | 9 | 10 | 11 |
12 | 13 |
    14 |
  • 15 | 16 | 원 17 |
  • 18 |
  • 19 | 20 | % 21 |
  • 22 |
  • 23 | 24 |
  • 25 |
26 |
27 |
28 | 29 | 42 | 43 | -------------------------------------------------------------------------------- /실전프로젝트/converter/css/converter.css: -------------------------------------------------------------------------------- 1 | body{ 2 | box-sizing: border-box; 3 | } 4 | .container { 5 | width:350px; 6 | margin:30px auto; 7 | } 8 | .container > h2 { 9 | text-align:center; 10 | } 11 | .change { 12 | box-sizing: border-box; 13 | width:100%; 14 | padding:15px 20px; 15 | background:#fbfbfb; 16 | border:1px solid #eee; 17 | } 18 | .box { 19 | display:inline-block; 20 | height:28px; 21 | border:1px solid #ddd; 22 | background-color:#fff; 23 | } 24 | #exchange { 25 | display:inline-block; 26 | width:20px; 27 | height:25px; 28 | margin:0 10px; 29 | line-height:25px; 30 | } 31 | #exchange:hover { 32 | cursor: pointer; 33 | } 34 | .box input[type="text"] { 35 | display:inline-block; 36 | width:80px; 37 | height:25px; 38 | padding-right:3px; 39 | border:0; 40 | line-height:25px; 41 | font-size:12px; 42 | font-weight:bold; 43 | text-align:right; 44 | } 45 | .unit { 46 | width:40px; 47 | height:25px; 48 | padding-right:10px; 49 | line-height: 25px; 50 | font-family:"돋움"; 51 | font-size:12px; 52 | text-align:right; 53 | } 54 | -------------------------------------------------------------------------------- /06/js/dday-100.js: -------------------------------------------------------------------------------- 1 | var now = new Date(); // 오늘 날짜 정보를 Date 객체의 인스턴스 now 객체로 만듭니다. 2 | var firstDay = new Date("2018-03-23"); // 처음 만난 날의 날짜 정보를 firstDay 객체로 만듭니다. 3 | var toNow = now.getTime(); // 오늘 날짜를 밀리초로 바꿉니다. 4 | var toFirst = firstDay.getTime(); // 처음 만난 날을 밀리초로 바꿉니다. 5 | var passedTime = toNow - toFirst; // 처음 만난 날과 오늘 사이의 차이 (밀리초) 6 | var passedDay = Math.round(passedTime/(24*60*60*1000)); // 밀리초를 일로 변환 후 반올림합니다. 7 | document.querySelector('#accent').innerText = passedDay + "일"; // #accent 영역에 표시합니다. 8 | 9 | var future = toFirst + 100*(1000*60*60*24); // 처음 만난 날에 밀리초로 바꾼 100일을 더합니다. 10 | var someday = new Date(future); // future100 값을 사용해 Date 객체의 인스턴스를 만듭니다. 11 | var year = someday.getFullYear( ); // ‘연도’를 가져와 year 변수에 저장합니다. 12 | var month = someday.getMonth( ); // '월'을 가져와 month 변수에 저장합니다. 13 | var date = someday.getDate( ); // '일'을 가져와 date 변수에 저장합니다. 14 | document.querySelector("#date100").innerText = year + "년 " + month + "월 " + date + "일"; 15 | 16 | future = toFirst + 200*(1000*60*60*24); // 처음 만난 날에 밀리초로 바꾼 200일을 더합니다. 17 | someday = new Date(future); // future 값을 사용해 Date 객체의 인스턴스를 만듭니다. 18 | year = someday.getFullYear( ); // ‘연도’를 가져와 year 변수에 저장합니다. 19 | month = someday.getMonth( ); // '월'을 가져와 month 변수에 저장합니다. 20 | date = someday.getDate( ); // '일'을 가져와 date 변수에 저장합니다. 21 | document.querySelector("#date200").innerText = year + "년 " + month + "월 " + date + "일"; -------------------------------------------------------------------------------- /09/sol-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 연습문제 1 8 | 9 | 10 | 11 |
12 |

피자 주문

13 |
14 |
15 | 사이즈 16 |

Large - 24000 원

17 |
18 |
19 | 추가 주문 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 합계 28 | 29 |
30 |
31 |
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /08/js/register-delete.js: -------------------------------------------------------------------------------- 1 | function newRegister() { 2 | var newP = document.createElement("p"); // 새 p 요소 만들기 3 | var userName = document.querySelector("#userName"); 4 | var newText = document.createTextNode(userName.value); // 새 텍스트 노드 만들기 5 | newP.appendChild(newText); // 텍스트 노드를 p 요소의 자식 요소로 연결하기 6 | 7 | var delBttn = document.createElement("span"); // 새 button 요소 만들기 8 | var delText = document.createTextNode("X"); // 새 텍스트 노드 만들기 9 | delBttn.setAttribute("class", "del"); // 버튼에 class 속성 설정하기 10 | delBttn.appendChild(delText); // 텍스트 노드를 button 요소의 자식 요소로 연결하기 11 | newP.appendChild(delBttn); // del 버튼을 p 요소의 자식 요소로 12 | 13 | var nameList = document.querySelector("#nameList"); 14 | nameList.insertBefore(newP, nameList.childNodes[0]); // p 요소를 #nameList 맨 앞에 추가하기 15 | // nameList.appendChild(newP); // p 요소를 #nameList의 자식 요소로 만들기 16 | userName.value = ""; // 텍스트 필드 지우기 17 | 18 | var removeBttns = document.querySelectorAll(".del"); 19 | 20 | for (var i=0; i 태그 저장 18 | for (var i = 0; i < itemList.length; i++) { // 배열 요소마다 반복 19 | list += "
  • " + itemList[i] + "X
  • "; // 요소와 삭제 버튼을
  • ~
  • 로 묶음 20 | } 21 | list += ""; // 목록을 끝내는 태그 저장 22 | 23 | document.querySelector('#itemList').innerHTML = list; // list 내용 표시 24 | 25 | var remove = document.querySelectorAll(".close"); // 삭제 버튼을 변수로 저장. 배열 형태가 됨 26 | for (var i = 0; i < remove.length; i++) { // remove 배열의 요소 모두를 확인 27 | remove[i].addEventListener("click", removeList); // 요소를 클릭하면 removeList() 실행 28 | } 29 | } 30 | 31 | function removeList() { 32 | var id = this.getAttribute("id"); // this(클릭한 삭제 버튼)의 id 값 가져와 id 변수에 저장 33 | itemList.splice(id, 1); // itemList 배열에서 인덱스 값이 id인 요소 1개 삭제 34 | showList(); // 변경된 itemList 배열을 다시 화면에 표시 35 | } -------------------------------------------------------------------------------- /07/js/diy-itemList.js: -------------------------------------------------------------------------------- 1 | var itemList = []; 2 | var addBtn = document.querySelector('#add'); 3 | addBtn.addEventListener("click", addList); 4 | 5 | getItems(); 6 | 7 | function getItems() { 8 | var storedData = localStorage.getItem("storageList"); 9 | if(storedData != null) itemList = JSON.parse(storedData); 10 | showList(); 11 | } 12 | 13 | function addList() { 14 | var item = document.querySelector('#item').value; 15 | if(item != null) { 16 | itemList.push(item); 17 | document.querySelector('#item').value = ""; 18 | document.querySelector('#item').focus(); 19 | } 20 | localStorage.setItem("storageList", JSON.stringify(itemList)); 21 | showList(); 22 | } 23 | 24 | function showList() { 25 | var list = "
      "; 26 | for (var i=0; iX"; 28 | } 29 | list += "
    "; 30 | 31 | document.querySelector('#itemList').innerHTML = list; 32 | 33 | var remove = document.getElementsByClassName('close'); 34 | for (var i=0; i button:hover { 38 | background-color:#222; 39 | color:white; 40 | border:1px solid white; 41 | } 42 | hr { 43 | margin-top:20px; 44 | border:1px dashed #eee; 45 | width:96%; 46 | } 47 | .remaining { 48 | margin-top:50px; 49 | font-size:34px; 50 | } 51 | .accent { 52 | color:blue; 53 | font-size:34px; 54 | font-weight:bold; 55 | } 56 | -------------------------------------------------------------------------------- /05/domEvent.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 자바스크립트 이벤트 8 | 9 | 10 | 11 |
    12 | 13 | 14 |
    15 |

    민들레

    16 |

    어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 쏙 올라온다. 톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다. 특히 꽃이 지고나면 솜털모양의 깃을 가진 씨앗들이 나오는데 바람을 타고 날아가서 널리 퍼진다.

    17 | 18 |
    19 |
    20 | 21 | 38 | 39 | -------------------------------------------------------------------------------- /06/css/d-day.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Black+Han+Sans|Jua'); 2 | 3 | * { 4 | box-sizing: border-box; 5 | } 6 | .container{ 7 | width:450px; 8 | margin:0 auto; 9 | /* background:url(images/heart.png) no-repeat 5px -100px; 10 | background-size:500px; */ 11 | border:1px solid #ccc; 12 | border-radius:2%; 13 | box-shadow:2px 2px 5px #333; 14 | } 15 | .day1{ 16 | padding-top:20px; 17 | text-align:center; 18 | } 19 | .day1 h3 { 20 | font-size:1.2em; 21 | color:#666; 22 | } 23 | .accent{ 24 | margin-left:10px; 25 | margin-right:10px; 26 | margin-top:10px; 27 | font-family: 'Jua', sans-serif; 28 | font-weight:bold; 29 | font-size:3.5em; 30 | color:#222; 31 | } 32 | .bar { 33 | width:100%; 34 | margin:60px auto 0 auto; 35 | padding-left:15px; 36 | height:40px; 37 | background:#747474; 38 | color:#fff; 39 | font-size:1.2em; 40 | line-height:40px; 41 | } 42 | .day2 { 43 | width:420px; 44 | margin:20px auto 20px auto; 45 | } 46 | .day2 ul { 47 | list-style: none; 48 | border-bottom:1px dashed #ccc; 49 | height:60px; 50 | } 51 | .day2 ul:last-child { 52 | border-bottom:none; 53 | } 54 | .item-title { 55 | float:left; 56 | width:160px; 57 | font-weight:bold; 58 | font-size:1.5em; 59 | line-height:60px; 60 | } 61 | .item-date { 62 | float:left; 63 | margin-left:60px; 64 | font-size:1.2em; 65 | color:#222; 66 | text-align:right; 67 | line-height:60px; 68 | } -------------------------------------------------------------------------------- /07/js/checklist-result.js: -------------------------------------------------------------------------------- 1 | var itemList = []; 2 | 3 | var addBtn = document.querySelector("#add"); 4 | addBtn.addEventListener("click", addList); // addBtn.onclick = addList; 라고 해도 됨 5 | 6 | function addList() { 7 | var item = document.querySelector("#item").value; // 텍스트 필드 내용 가져옴 8 | if (item != null) { 9 | itemList.push(item); // itemList 배열의 끝에 item 변수 값 추가 10 | document.querySelector("#item").value = ""; // id=”item”인 요소의 값을 지움 11 | document.querySelector("#item").focus(); // 텍스트 필드에 focus( ) 메서드 적용 12 | } 13 | showList(); 14 | } 15 | 16 | function showList() { 17 | var list = "
      "; // 목록을 시작하는
        태그 저장 18 | for (var i=0; iX"; // 요소와 삭제 버튼을
      • ~
      • 로 묶음 20 | } 21 | list += "
      "; // 목록을 끝내는
    태그 저장 22 | 23 | document.querySelector('#itemList').innerHTML = list; // list 내용 표시 24 | 25 | var remove = document.querySelectorAll(".close"); // 삭제 버튼을 변수로 저장. 배열 형태가 됨 26 | for(var i = 0; i < remove.length; i++) { // remove 배열의 요소 모두를 확인 27 | remove[i].addEventListener("click", removeList); // 요소를 클릭하면 removeList() 실행 28 | } 29 | } 30 | 31 | function removeList() { 32 | var id = this.getAttribute("id"); // this(클릭한 삭제 버튼)의 id 값 가져와 id 변수에 저장 33 | itemList.splice(id, 1); // itemList 배열에서 인덱스 값이 id인 요소 1개 삭제 34 | showList(); // 변경된 itemList 배열을 다시 화면에 표시 35 | } -------------------------------------------------------------------------------- /09/register.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 회원 가입 9 | 10 | 11 |
    12 |

    회원 가입

    13 |
    14 |
      15 |
    • 16 | 17 | 18 |
    • 19 |
    • 20 | 21 | 22 |
    • 23 |
    • 24 | 25 | 26 |
    • 27 |
    • 28 | 29 | 30 |
    • 31 |
    • 32 | 33 | 34 | 35 |
    • 36 |
    37 |
      38 |
    • 39 | 40 |
    • 41 |
    • 42 | 43 |
    • 44 |
    45 |
    46 |
    47 | 48 | -------------------------------------------------------------------------------- /09/register-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 회원 가입 9 | 10 | 11 |
    12 |

    회원 가입

    13 |
    14 |
      15 |
    • 16 | 17 | 18 |
    • 19 |
    • 20 | 21 | 22 |
    • 23 |
    • 24 | 25 | 26 |
    • 27 |
    • 28 | 29 | 30 |
    • 31 |
    • 32 | 33 | 34 | 35 |
    • 36 |
    37 |
      38 |
    • 39 | 40 |
    • 41 |
    • 42 | 43 |
    • 44 |
    45 |
    46 |
    47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /09/diy-signup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 회원 가입 9 | 10 | 11 |
    12 |

    회원 가입

    13 |
    14 |
      15 |
    • 16 | 17 | 18 |
    • 19 |
    • 20 | 21 | 22 |
    • 23 |
    • 24 | 25 | 26 |
    • 27 |
    • 28 | 29 | 30 |
    • 31 |
    • 32 | 33 | 34 | 35 |
    • 36 |
    37 |
      38 |
    • 39 | 40 |
    • 41 |
    • 42 | 43 |
    • 44 |
    45 |
    46 |
    47 | 48 | 49 | -------------------------------------------------------------------------------- /09/register-tmp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 회원 가입 9 | 10 | 11 |
    12 |

    회원 가입

    13 |
    14 |
      15 |
    • 16 | 17 | 18 |
    • 19 |
    • 20 | 21 | 22 |
    • 23 |
    • 24 | 25 | 26 |
    • 27 |
    • 28 | 29 | 30 |
    • 31 |
    • 32 | 33 | 34 | 35 |
    • 36 |
    37 |
      38 |
    • 39 | 40 |
    • 41 |
    • 42 | 43 |
    • 44 |
    45 |
    46 |
    47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /09/diy-signup-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 회원 가입 9 | 10 | 11 |
    12 |

    회원 가입

    13 |
    14 |
      15 |
    • 16 | 17 | 18 |
    • 19 |
    • 20 | 21 | 22 |
    • 23 |
    • 24 | 25 | 26 |
    • 27 |
    • 28 | 29 | 30 |
    • 31 |
    • 32 | 33 | 34 | 35 |
    • 36 |
    37 |
      38 |
    • 39 | 40 |
    • 41 |
    • 42 | 43 |
    • 44 |
    45 |
    46 |
    47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /08/showBig.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM 8 | 9 | 10 | 11 |
    12 |

    에디오피아 게뎁

    13 |
    14 | 에디오피아 게뎁 15 |
    16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
      23 |
    • 상품명 : 에디오피아 게뎁
    • 24 |
    • 판매가 : 9,000원
    • 25 |
    • 배송비 : 3,000원
      (50,000원 이상 구매 시 무료)
    • 26 |
    • 적립금 : 180원(2%)
    • 27 |
    • 로스팅 : 2019.06.17
    • 28 | 29 |
    30 | 상세 설명 보기 31 |
    32 | 33 |
    34 |
    35 |

    상품 상세 정보

    36 |
      37 |
    • 원산지 : 에디오피아
    • 38 |
    • 지 역 : 이르가체프 코체레
    • 39 |
    • 농 장 : 게뎁
    • 40 |
    • 고 도 : 1,950 ~ 2,000 m
    • 41 |
    • 품 종 : 지역 토착종
    • 42 |
    • 가공법 : 워시드
    • 43 |
    44 |

    Information

    45 |

    2차 세계대전 이후 설립된 게뎁 농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티 커피를 생산합니다.

    46 |

    Flavor Note

    47 |

    은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

    48 |
    49 |
    50 | 51 | -------------------------------------------------------------------------------- /08/diy-showBig.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM 8 | 9 | 10 | 11 |
    12 |

    에디오피아 게뎁

    13 |
    14 | 에디오피아 게뎁 15 |
    16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
      23 |
    • 상품명 : 에디오피아 게뎁
    • 24 |
    • 판매가 : 9,000원
    • 25 |
    • 배송비 : 3,000원
      (50,000원 이상 구매 시 무료)
    • 26 |
    • 적립금 : 180원(2%)
    • 27 |
    • 로스팅 : 2019.06.17
    • 28 | 29 |
    30 | 상세 설명 보기 31 |
    32 | 33 |
    34 |
    35 |

    상품 상세 정보

    36 |
      37 |
    • 원산지 : 에디오피아
    • 38 |
    • 지 역 : 이르가체프 코체레
    • 39 |
    • 농 장 : 게뎁
    • 40 |
    • 고 도 : 1,950 ~ 2,000 m
    • 41 |
    • 품 종 : 지역 토착종
    • 42 |
    • 가공법 : 워시드
    • 43 |
    44 |

    Information

    45 |

    2차 세계대전 이후 설립된 게뎁 농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티 커피를 생산합니다.

    46 |

    Flavor Note

    47 |

    은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

    48 |
    49 |
    50 | 51 | -------------------------------------------------------------------------------- /08/css/display.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:600px; 3 | margin:0 auto; 4 | } 5 | #prod-pic, #desc { 6 | float:left; 7 | } 8 | #prod-pic { 9 | margin:20px 20px auto 10px; 10 | padding:0; 11 | } 12 | #cup { 13 | box-shadow:1px 1px 2px #eee; 14 | outline:1px dashed #ccc; 15 | outline-offset: -7px; 16 | } 17 | #small-pic { 18 | margin-top:20px; 19 | list-style: none; 20 | padding:0; 21 | } 22 | #small-pic > li { 23 | float:left; 24 | margin-right:10px; 25 | } 26 | .small { 27 | width:60px; 28 | height:60px; 29 | } 30 | #small-pic img:hover { 31 | cursor:pointer; 32 | } 33 | #desc { 34 | width:300px; 35 | padding-top:20px; 36 | margin-bottom:50px; 37 | } 38 | .bluetext { 39 | color:#4343ff; 40 | font-weight:bold; 41 | } 42 | #desc button { 43 | margin-top:20px; 44 | margin-bottom:20px; 45 | width:100%; 46 | padding:10px; 47 | } 48 | #desc ul { 49 | list-style:none; 50 | } 51 | #desc li{ 52 | font-size:0.9em; 53 | line-height:1.8; 54 | } 55 | #desc a { 56 | text-decoration: none; 57 | font-size:0.9em; 58 | color:blue; 59 | padding-left:40px; 60 | } 61 | hr { 62 | clear:both; 63 | border:1px dashed #f5f5f5; 64 | } 65 | #detail { 66 | padding-top:20px; 67 | } 68 | #detail li { 69 | font-size:0.9em; 70 | line-height:1.4; 71 | } 72 | h1 { 73 | font-size:2em; 74 | } 75 | h2 { 76 | font-size:1.5em; 77 | color:#bebebe; 78 | font-weight:normal; 79 | } 80 | h3 { 81 | font-size:1.1em; 82 | color:#222; 83 | } 84 | p { 85 | font-size:0.9em; 86 | line-height:1.4; 87 | text-align: justify; 88 | } 89 | -------------------------------------------------------------------------------- /실전프로젝트/upAndDown/css/finding.css: -------------------------------------------------------------------------------- 1 | #wrapper { 2 | position:relative; 3 | width:300px; 4 | height:400px; 5 | margin:0 auto; 6 | text-align:center; 7 | border:10px solid #777; 8 | border-radius:5px; 9 | outline:2px dotted #fff; 10 | outline-offset:-6px; 11 | } 12 | h1 { 13 | margin-top:0; 14 | padding:10px; 15 | background-color:#222; 16 | color:white; 17 | } 18 | form { 19 | margin-top:40px; 20 | } 21 | input[type="text"] { 22 | width:120px; 23 | height:40px; 24 | padding:0; 25 | border:#ccc 1px solid; 26 | } 27 | .btn { 28 | width:50px; 29 | height:40px; 30 | /* border-radius:50%; */ 31 | padding:10px 3px; 32 | border:#ccc 1px solid; 33 | 34 | } 35 | .btn-1 { 36 | background-color:azure; 37 | } 38 | .btn-2 { 39 | background-color: #eee; 40 | } 41 | #display { 42 | font-size:30px; 43 | margin-top:70px; 44 | } 45 | .output { 46 | font-size:20px; 47 | font-weight:bold; 48 | } 49 | #counter { 50 | position:absolute; 51 | left:0; 52 | bottom:0; 53 | width:100%; 54 | height:30px; 55 | 56 | } 57 | .footer { 58 | background-color:#222; 59 | color:white; 60 | line-height:30px; 61 | } 62 | 63 | .quest { 64 | font-family:arial; 65 | font-size:30px; 66 | color:darkorange; 67 | text-shadow:1px 1px 3px #222; 68 | padding:2px 1px; 69 | } -------------------------------------------------------------------------------- /08/css/product.css: -------------------------------------------------------------------------------- 1 | #container { 2 | width:600px; 3 | margin:0 auto; 4 | } 5 | #prod-pic, #desc { 6 | float:left; 7 | } 8 | #prod-pic { 9 | margin:20px 20px auto 10px; 10 | padding:0; 11 | } 12 | #cup { 13 | box-shadow:1px 1px 2px #eee; 14 | outline:1px dashed #ccc; 15 | outline-offset: -7px; 16 | } 17 | #small-pic { 18 | margin-top:20px; 19 | list-style: none; 20 | padding:0; 21 | } 22 | #small-pic > li { 23 | float:left; 24 | margin-right:10px; 25 | } 26 | .small { 27 | width:60px; 28 | height:60px; 29 | } 30 | #small-pic img:hover { 31 | cursor:pointer; 32 | } 33 | #desc { 34 | width:300px; 35 | padding-top:20px; 36 | margin-bottom:50px; 37 | } 38 | .bluetext { 39 | color:#4343ff; 40 | font-weight:bold; 41 | } 42 | #desc button { 43 | margin-top:20px; 44 | margin-bottom:20px; 45 | width:100%; 46 | padding:10px; 47 | } 48 | #desc ul { 49 | list-style:none; 50 | } 51 | #desc li{ 52 | font-size:0.9em; 53 | line-height:1.8; 54 | } 55 | #desc a { 56 | text-decoration: none; 57 | font-size:0.9em; 58 | color:blue; 59 | padding-left:40px; 60 | } 61 | hr { 62 | clear:both; 63 | border:1px dashed #f5f5f5; 64 | } 65 | #detail { 66 | padding-top:10px; 67 | display:none; 68 | } 69 | #detail li { 70 | font-size:0.9em; 71 | line-height:1.4; 72 | } 73 | h1 { 74 | font-size:2em; 75 | } 76 | h2 { 77 | font-size:1.5em; 78 | color:#bebebe; 79 | font-weight:normal; 80 | } 81 | h3 { 82 | font-size:1.1em; 83 | color:#222; 84 | } 85 | p { 86 | font-size:0.9em; 87 | line-height:1.4; 88 | text-align: justify; 89 | } 90 | -------------------------------------------------------------------------------- /08/product.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM 8 | 9 | 10 | 11 |
    12 |

    에디오피아 게뎁

    13 |
    14 | 에디오피아 게뎁 15 |
    16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
      23 |
    • 상품명 : 에디오피아 게뎁
    • 24 |
    • 판매가 : 9,000원
    • 25 |
    • 배송비 : 3,000원
      (50,000원 이상 구매 시 무료)
    • 26 |
    • 적립금 : 180원(2%)
    • 27 |
    • 로스팅 : 2019.06.17
    • 28 | 29 |
    30 | 상세 설명 보기 31 |
    32 |
    33 |
    34 |

    상품 상세 정보

    35 |
      36 |
    • 원산지 : 에디오피아
    • 37 |
    • 지 역 : 이르가체프 코체레
    • 38 |
    • 농 장 : 게뎁
    • 39 |
    • 고 도 : 1,950 ~ 2,000 m
    • 40 |
    • 품 종 : 지역 토착종
    • 41 |
    • 가공법 : 워시드
    • 42 |
    43 |

    Information

    44 |

    2차 세계대전 이후 설립된 게뎁 농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티 커피를 생산합니다.

    45 |

    Flavor Note

    46 |

    은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

    47 |
    48 |
    49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /08/product-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM 8 | 9 | 10 | 11 |
    12 |

    에디오피아 게뎁

    13 |
    14 | 에디오피아 게뎁 15 |
    16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
      23 |
    • 상품명 : 에디오피아 게뎁
    • 24 |
    • 판매가 : 9,000원
    • 25 |
    • 배송비 : 3,000원
      (50,000원 이상 구매 시 무료)
    • 26 |
    • 적립금 : 180원(2%)
    • 27 |
    • 로스팅 : 2019.06.17
    • 28 | 29 |
    30 | 상세 설명 보기 31 |
    32 |
    33 |
    34 | 35 |

    상품 상세 정보

    36 |
      37 |
    • 원산지 : 에디오피아
    • 38 |
    • 지 역 : 이르가체프 코체레
    • 39 |
    • 농 장 : 게뎁
    • 40 |
    • 고 도 : 1,950 ~ 2,000 m
    • 41 |
    • 품 종 : 지역 토착종
    • 42 |
    • 가공법 : 워시드
    • 43 |
    44 |

    Information

    45 |

    2차 세계대전 이후 설립된 게뎁 농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티 커피를 생산합니다.

    46 |

    Flavor Note

    47 |

    은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

    48 |
    49 |
    50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /08/showBig-result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | DOM 8 | 9 | 10 | 11 |
    12 |

    에디오피아 게뎁

    13 |
    14 | 에디오피아 게뎁 15 |
    16 | 17 | 18 | 19 |
    20 |
    21 |
    22 |
      23 |
    • 상품명 : 에디오피아 게뎁
    • 24 |
    • 판매가 : 9,000원
    • 25 |
    • 배송비 : 3,000원
      (50,000원 이상 구매 시 무료)
    • 26 |
    • 적립금 : 180원(2%)
    • 27 |
    • 로스팅 : 2019.06.17
    • 28 | 29 |
    30 | 상세 설명 보기 31 |
    32 | 33 |
    34 |
    35 |

    상품 상세 정보

    36 |
      37 |
    • 원산지 : 에디오피아
    • 38 |
    • 지 역 : 이르가체프 코체레
    • 39 |
    • 농 장 : 게뎁
    • 40 |
    • 고 도 : 1,950 ~ 2,000 m
    • 41 |
    • 품 종 : 지역 토착종
    • 42 |
    • 가공법 : 워시드
    • 43 |
    44 |

    Information

    45 |

    2차 세계대전 이후 설립된 게뎁 농장은 유기농 인증 농장으로 여성의 고용 창출과 지역사회 발전에 기여하며 3대째 이어져 내려오는 오랜 역사를 가진 농장입니다. 게뎁 농장은 SCAA 인증을 받은 커피 품질관리 실험실을 갖추고 있어 철처한 관리를 통해 스페셜티 커피를 생산합니다.

    46 |

    Flavor Note

    47 |

    은은하고 다채로운 꽃향, 망고, 다크 체리, 달달함이 입안 가득.

    48 |
    49 |
    50 | 51 | 52 | 53 | --------------------------------------------------------------------------------