[웹개발 종합반] 1주차 개발일지 - (3)

zzzzsb·2022년 2월 10일
0

Sparta

목록 보기
3/15

12. 자바스크립트 맛보기

자바스크립트란?

  • 프로그래밍 언어 중 하나, 브라우저가 알아들을 수 있는 언어(표준)

자바스크립트 - HTML 연결

버튼을 클릭하면 경고창이 뜨게하기

<script>
  function hey(){
      alert('안녕!');
  }
</script>
  • head태그 안에 script태그로 공간을 만들어 위 함수를 작성해준다.
<a onclick="hey()" class="btn btn-primary btn-lg" href="#" role="button">포스팅박스 열기</a>
  • 버튼에 위의 hey 함수를 연결해준다.

  • 크롬 개발자 도구 콘솔창에서 hey()함수 입력해도 똑같이 alert 뜸
  • 단축키: F12 / option+command+i

13. 자바스크립트 기초문법 (1)

💡 콘솔

console.log(변수), 콘솔 창에 괄호 안의 값을 출력해줌.
개발자가 결과값을 보기 편하도록!

console.log(변수1,변수2) 로 여러 변수를 한번에 출력할 수도 있음.

console.log("Hello World!");

💡 변수 & 기본연산

let num = 20
num = 'Bob'
  • 변수 대입: a=2 (2를 a라는 변수에 넣음)
  • 변수는 let으로 선언한다.

let a = 1
let b = 2

a+b // 3
a/b // 0.5

let first = 'Bob'
let last = 'Lee'

first+last // 'BobLee'

first+' '+last // 'Bob Lee'

first+a // Bob1 -> 문자+숫자를 하면, 숫자를 문자로 바꾼 뒤 수행.
  • 변수는 사칙연산, 문자열 더하기 등이 기본적으로 가능함.

let first_name = 'bob' // snake case
let firstName = 'bob' // camel case 
  • 변수명은 쉽게 알아볼 수 있게 쓰는 게 중요하다.
  • 다른 특수문자 또는 띄어쓰기는 불가능!

💡 자료형

리스트 & 딕셔너리

let a_list = []  // 리스트를 선언. 

// 또는,

let b_list = [1,2,'hey',3] // 로 선언 가능

b_list[1] // 2 를 출력
b_list[2] // 'hey'를 출력

// 리스트에 요소 넣기
b_list.push('헤이')
b_list // [1, 2, "hey", 3, "헤이"] 를 출력

// 리스트의 길이 구하기
b_list.length // 5를 출력
  • 리스트: 순서를 가지고 있는 형태

let a_dict = {}  // 딕셔너리 선언. 

// 또는,

let b_dict = {'name':'Bob','age':21} // 로 선언 가능
b_dict['name'] // 'Bob'을 출력
b_dict['age'] // 21을 출력

b_dict['height'] = 180 // 딕셔너리에 키:밸류 넣기
b_dict // {name: "Bob", age: 21, height: 180}을 출력
  • 딕셔너리: key-value 값의 묶음

names = [{'name':'bob','age':20},{'name':'carry','age':38}]

// names[0]['name']의 값은? 'bob'
// names[1]['name']의 값은? 'carry'

new_name = {'name':'john','age':7}
names.push(new_name)

// names의 값은? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]
// names[2]['name']의 값은? 'john'
  • 리스트와 딕셔너리 조합해서 사용한 예제

리스트와 딕셔너리, 왜 필요할까?

💡 순서를 표시할 수 있고, 정보를 묶을 수 있음

만약, 이름, 휴대폰 번호등을 변수만을 사용한 표현한다면 ..

let customer_1_name = '김스파';
let customer_1_phone = '010-1234-1234';
let customer_2_name = '박르탄';
let customer_2_phone = '010-4321-4321';

...(알아보기 힘들다.)

👉 딕셔너리를 활용한다면, 고객별로 정보를 묶을수 있음.

let customer_1 = {'name': '김스파', 'phone': '010-1234-1234'};
let customer_2 = {'name': '박르탄', 'phone': '010-4321-4321'};

👉 순서를 나타내기 위해 리스트를 사용하면, 더 깔끔해짐.

let customer = [
{'name': '김스파', 'phone': '010-1234-1234'},
{'name': '박르탄', 'phone': '010-4321-4321'}
]

✅ 보기에도 깔끔하고, 고객을 새로 추가하고 싶을때에도 .push 함수로 간단하게 대응할 수 있다.


💡 기본 함수들

ex. 나눗셈의 나머지 구하기

let a = 20
let b = 7

a % b = 6

ex. 모든 알파벳을 대문자로 바꾸기

let myname = 'velog'

myname.toUpperCase() // VELOG

ex. 특정 문자 기준으로 문자열 나누기

let myemail = 'sparta@gmail.com'

let result = myemail.split('@') // ['sparta','gmail.com']

result[0] // sparta
result[1] // gmail.com

let result2 = result[1].split('.') // ['gmail','com']

result2[0] // gmail -> 우리가 알고 싶었던 것!
result2[1] // com

// 아래처럼 간단하게 쓸 수도 있음
myemail.split('@')[1].split('.')[0] // gmail

------------------------------

let txt = '서울시-마포구-망원동'
let names = txt.split('-'); // ['서울시','마포구','망원동']

ex. 특정 문자 기준으로 문자열 합치기

let result = names.join('>'); // '서울시>마포구>망원동'

14. 자바스크립트 기초문법 (2)

💡 함수

기본 생김새

// 만들기
function 함수이름(필요한 변수들) {
	내릴 명령들을 순차적으로 작성
}
// 사용하기
함수이름(필요한 변수들);

예시

// 두 숫자를 입력받으면 더한 결과를 돌려주는 함수
function sum(num1, num2) {
	console.log('num1: ', num1, ', num2: ', num2);
	return num1 + num2;
}

sum(3, 5); // 8
sum(4, -1); // 3

💡 조건문

20보다 작으면 작다고, 크면 크다고 알려주는 함수

function is_adult(age){
	if(age > 20){
		alert('성인이에요')
	} else {
		alert('청소년이에요')
	}
}

is_adult(25)

if, else if, else

function is_adult(age){
	if(age > 20){
		alert('성인이에요')
	} else if (age > 10) {
		alert('청소년이에요')
	} else {
		alert('10살 이하!')
	}
}

is_adult(12)

AND 조건 / OR 조건

// AND 조건
function is_adult(age, sex){
	if(age > 20 && sex == '여'){
		alert('성인 여성')
	} else if (age > 20 && sex == '남') {
		alert('성인 남성')
	} else {
		alert('청소년이에요')
	}
}

// OR 조건
function is_adult(age, sex){
	if (age > 65 || age < 10) {
		alert('탑승하실 수 없습니다')
	} else if(age > 20 && sex == '여'){
		alert('성인 여성')
	} else if (age > 20 && sex == '남') {
		alert('성인 남성')
	} else {
		alert('청소년이에요')
	}
}

is_adult(25,'남')

💡 반복문

0~99까지 출력하기

for (let i = 0; i < 100; i++) {
	console.log(i);
}
  • 반복문은 주로 리스트와 함께 쓰임

반복문 예제 1

let people = ['철수','영희','민수','형준','기남','동희']

// 리스트의 모든 원소를 한번에 출력하기
for (let i = 0 ; i < people.length ; i++) {
	console.log(people[i])
}

반복문 예제 2

let scores = [
	{'name':'철수', 'score':90},
	{'name':'영희', 'score':85},
	{'name':'민수', 'score':70},
    {'name':'형준', 'score':50},
    {'name':'기남', 'score':68},
    {'name':'동희', 'score':30},
]

// 리스트 내의 딕셔너리를 하나씩 출력하기
for (let i = 0 ; i < scores.length ; i++) {
	console.log(scores[i]);
}

// 점수 70점 미만인 사람들의 이름만 출력하기
for (let i = 0 ; i < scores.length ; i++) {
	if (scores[i]['score'] < 70) {
		console.log(scores[i]['name']);
	}
}

15. Javascript 연습

1. 미세먼지(IDEX_MVL)의 값이 40 미만인 구 이름(MSRSTE_NM)과 값을 출력하기

for (let i = 0; i < mise_list.length; i++) {
  let mise = mise_list[i];
  if (mise["IDEX_MVL"] < 40) {
    let gu_name = mise["MSRSTE_NM"];
    let gu_mise = mise["IDEX_MVL"];
    console.log("40보다 작은 구: " + gu_name + ", " + gu_mise);
  }
}

+ 숫자 관계없이, 확장성 있게 함수로 만들어보기

function show_gus(index) {
  for (let i = 0; i < mise_list.length; i++) {
    let mise = mise_list[i];
    if (mise["IDEX_MVL"] < index) {
      let gu_name = mise["MSRSTE_NM"];
      let gu_mise = mise["IDEX_MVL"];
	    console.log(index + "보다 작은 구: " + gu_name + ", " + gu_mise);
    }
  }
}

show_gus(40) // 40보다 작은 구만 출력!
show_gus(35) // 35보다 작은 구만 출력!

2. 자전거(parkingBikeTotCnt)가 5개 이하인 정류장의 이름을 출력하기

for (let i = 0; i < bikes.length; i++) {
	if (bikes[i]['parkingBikeTotCnt'] <= 5) {
		let station = bikes[i]['stationName'];
		console.log(station);
	}
}

+ 함수로 만들어보기

function show_names(num){
	for (let i = 0; i < bikes.length; i++) {
		if (bikes[i]['parkingBikeTotCnt'] <= num) {
		let station = bikes[i]['stationName'];
			console.log(num + "대 이하 정류장 : " + station);
		}
	}
}

show_names(10) // 10개 이하 주차된 정류소만 출력!
show_names(5) // 5개 이하 주차된 정류소만 출력!

16. 1주차 숙제

📃 아래 기획서를 보고, 부트스트랩 또는 템플릿을 활용해서 나만의쇼핑몰의 메인 페이지를 완성하기

  • 기능: 주문하기 버튼을 클릭했을 때 '주문이 완료되었습니다.'라는 얼럿을 띄워주세요.

기획서 레이아웃

1주차 숙제

1주차 숙제 소스코드

<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
          integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
            integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
            crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
            integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
            crossorigin="anonymous"></script>

    <title>1주차 숙제</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+KR&display=swap" rel="stylesheet">
    <style>
        * {
            font-family: 'Noto Serif KR', serif;
        }
        .goods-image {
            background-image: url("https://search.pstatic.net/common/?src=http%3A%2F%2Fshop1.phinf.naver.net%2F20220112_176%2F16419235445241Qdtt_JPEG%2F43059379352763902_7984024.jpg&type=sc960_832");
            background-size: cover;
            background-position: center;
            width: 450px;
            height: 400px;
            margin: 10px auto 30px auto;
        }
        .goods-title {
            width: 450px;
            margin: auto;
            font-weight: bold;
        }
        .price {
            width: 450px;
            margin: auto;
            font-size: 14px;
        }
        .goods-description {
            width: 450px;
            margin: auto;
            font-size: 13px;
            text-align: left;
            padding-bottom: 20px;
        }
        .order{
            width: 450px;
            margin: auto;
        }
        .order-btn{
            display: block;
            margin: 0px auto 30px auto;
        }
    </style>
    <script>
        function order() {
            alert('주문이 완료되었습니다.');
        }
    </script>
</head>

<body>
    <div class="goods-image"></div>
    <div class="goods-title">
        <h4>[트루동] 아펠리 오 드 퍼퓸 100ml</h4>
    </div>
    <div class="price">
        가격: 330,000원 / 개
        <hr>
    </div>
    <div class="goods-description">
        그린 아이비와 블랙커런트 새싹의 청량한 풀내음으로 시작되는 향은<br>
        장미의 플로럴한 향과 만나 새벽 이슬을 머금은 장미 정원의 향을 선사합니다.<br>
        <br>
        HEAD | 로즈 에센스, 그린 아이비<br>
        HEART | 블랙커런트 싹, 이끼<br>
        BASE | 샌달우드, 통카빈
    </div>
    <div class="order">
        <div class="input-group mb-3">
            <div class="input-group-prepend">
                <span class="input-group-text" id="order-name">주문자 이름</span>
            </div>
            <input type="text" class="form-control">
        </div>
        <div class="input-group mb-3">
            <div class="input-group-prepend">
                <label class="input-group-text" for="order-num">수량</label>
            </div>
            <select class="custom-select" id="order-num">
                <option selected>-- 수량을 선택하세요 --</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
            </select>
        </div>
        <div class="input-group mb-3">
            <div class="input-group-prepend">
            <span class="input-group-text" id="address">주소</span>
            </div>
            <input type="text" class="form-control">
        </div>
        <div class="input-group mb-3">
            <div class="input-group-prepend">
                <span class="input-group-text" id="tel">전화번호</span>
            </div>
            <input type="text" class="form-control">
        </div>
        <button type="button" onclick="order()" class="btn btn-primary order-btn">주문하기</button>
    </div>
</body>

</html>
profile
성장하는 developer

0개의 댓글