본문 바로가기

화면 수업 정리

HTML,CSS,JS 10일차

날짜 관련 함수

new Date(); => 오늘 날짜 반환 new Date(string); => string 날짜 형식으로 변환

getFullYear(); 연도만 리턴

getMonth()+1; => 0월부터 11월까지 +1

getDate(); => 1~31 리턴

getDay(); => 요일을 리턴 0(일)~6(토)

getHours(), getMinutes(), getSeconds() : 시분초 추출

toLocaleDateString() : 2024. 08.07. toLocaleTimeString() toLocaleString()

 

활용)

 

<body>
    이름 : <input type="text" id="name"><br>
    주민번호 : <input type="text" id="rNum"><br>
    <button type="button" onclick="result()">확인</button>
    <h3 id="result"></h3>

    <script>
        function result(){
            let today = new Date(); //오늘날짜

            //주민등록번호
            // 980101-1234567 => 1900년대 (1/2면 1900+98)
            // 010101-3456789 => 2000년대 (3/4면 2000+01)
            let name = document.getElementById('name').value;
            let rNum = document.getElementById('rNum').value;
            // 생년월일, 나이, 성별
            //생년월일 
            let birth = rNum.substring(0, rNum.indexOf("-"));
            console.log(birth);

            //성별
            let getNum = rNum.charAt(rNum.indexOf("-")+1);
            console.log(getNum);
            let mw = (getNum==1 || getNum==3)? "남" : "여";
            console.log(mw);

            //나이
            // 오늘날짜 - 태어난 연도
            // 2024 - (2000+01)  / 2024 - (1900+97)
            let year = today.getFullYear();
            let birthYear = Number(rNum.substring(0, 2));
            let age = (getNum<=2)? year-(1900+birthYear) : year - (2000+birthYear);
            console.log(age);

            document.getElementById('result').innerText = 
            `이름:${name}, 생년월일:${birth}, 나이:${age}, 성별:${mw}`;
        }
    </script>
</body>

 

수학관련 함수

Math 클래스 : 반올림, 올림, 버림, 최대값, 최소값, 난수발생...

Math.round(), Math.ceil(), Math.floor() Math.max(), Math.min(), Math.random() ...

Math.random() : 0(포함) ~ 1(미포함) 사이의 난수를 리턴

Math.floor(Math.random()*개수)+시작값

 

타입 변환 casting(형변환)

문자 -> 숫자 : Number("string"), parseInt("1"), parseFloat("0.5")숫자 -> 문자 : 123.toString()

문자 -> 불리언 : Boolean("true")

불리언 -> 문자 : String(true);

숫자 -> 불리언 : Boolean(1)=true / Boolean(0)=false

불리언 -> 숫자 : Number(true) = 1 / Number(false) = 0

 

조건문

if / switch() : 조건문

if(조건식) { 실행문; } :조건식은 반드시 true/false 여야만 한다.

if(조건식){   조건식이 true이면

        실행문;

  } else {    false

        실행문;

 

}  if(조건식) {  

        실행문;

  } else if { 

        실행문;

  } else { 모든조건이 false 일경우

       실행문;

  }

 

switch 조건문

switch(식/값){

   case 1:

         처리문;

          break;

   case 2:

         처리문;

          break;

   case 3:

         처리문;

          break;

   default : 처리문;

     }

switch(식/값){        케이스를 묶어서 사용도 가능

  case 1: case 2: case 3:

         처리문;

          break;

  case 4: case 5: case 6:

          처리문; break;

          default: 처리문;

    }



if문 활용)

  <form action="">
        <fieldset>
            <legend>성적확인</legend>
            이름 : <input type="text" id="name"> <br>
            국어 : <input type="text" id="kor"> <br>
            영어 : <input type="text" id="eng"> <br>
            수학 : <input type="text" id="math"> <br>
            <button type="button" id="btn">성적계산</button>
        </fieldset>
    </form>
    <h3 id="result"></h3>
    
    <script>
        // 이름, 국어, 영어, 수학 점수를 입력받아 합계, 평균, 합격여부 출력
        // 합격여부는 평균이 60이상이면 pass / fail
        document.getElementById('btn').addEventListener('click',()=>{
            let name = document.getElementById('name').value;
            let kor = document.getElementById('kor').value;
            let eng = document.getElementById('eng').value;
            let math = document.getElementById('math').value;

            if(check(kor) && check(eng) && check(math)){
                let sum = Number(kor) + Number(eng) + Number(math);
                let avg = sum / 3;
                let pass = "";
                if (avg >= 60){
                    pass="pass";
                }else{
                    pass="fail";
                }

                document.getElementById('result').innerText = 
                `이름:${name}, 합계:${sum}, 평균:${avg.toFixed(2)}, 패스여부:${pass}`;
            }
        })

        // 입력 값의 범위가 0~100 사이의 점수가 아니면 alert 창 띄어 안내
        function check(num){
            //num : 국어점수, 영어점수, 수학점수 
            if(num < 0 || num > 100){
                alert("0~100사이의 값을 입력해주세요.");
                // 점수의 값을 비우기
                document.getElementById('kor').value = "";
                document.getElementById('eng').value = "";
                document.getElementById('math').value = "";
                document.getElementById('result').innerText ="";
                document.getElementById('kor').focus();
                return false;
            }else{
                return true;
            }
        }
    </script>

 

switch문을 사용해서 짝수 홀수 찍어보기

    <script>
        let num = 21;
        switch(num % 2){
            case 0: 
                console.log("짝수");
                break;
            case 1:
                console.log("홀수");
                break;
            default:
                console.log("이상한수");
        }

    </script>

 

반복문 : for, while, do~while

for : 반복 횟수가 명확할 때 for(초기값; 조건식; 증감식){ => 조건식이 true이면 반복실행 실행코드; }

while : 반복 횟수가 명확하지 않을 때 while(조건식){ => 조건식이 true이면 반복실행 실행코드; (조건식이 false가 될 수 있도록 조건식의 변경값을 포함.) }

조건식이 계속 true를 유지하면 무한루프 실행문 안에 조건식이 false가 될 수 있는 구문이 반드시 있어야 함.

break; 구문을 통해 반복문을 빠져나갈 수 있음.

 

향상된 for

for of : 배열안의 내용을 탐색할 때 사용 [] for(let value of Array){ code....; }

for in : 객체 안의 내용을 탐색할 때 사용 { } for(let value in Object){ code...; }

 

ex) 반복문 활용해서 가위바위보를 하고 승률 출력해보기

 

<body>
    <h1>가위바위보 10번하여 승률 출력</h1>
    <button type="button" id="btn">결과 출력</button>
    <h3>10게임의 승률은 <span id="result"></span>% 입니다.</h3>

    <script>
        // 가위 = 1 , 바위 =2 , 보 = 3
        // com = random / player = random
        // 승률 (승 / 10-무) * 100 소수점 2자리까지 표현
        // 콘솔 com / player 출력
        // 콘솔에 승: 무: 패: 
        
        document.getElementById('btn').addEventListener('click', () => {
            let com = 0;
            let player = 0;
            let win = 0;
            let equal = 0;
            let lose = 0;

            for(let i = 1; i <= 10; i++){
                com = Math.floor(Math.random()*3)+1;
                player = Math.floor(Math.random()*3)+1;
                console.log(`${com} / ${player} `)
                if(com == player){
                    equal++;
                }else if(player == 1 && com == 2){
                    lose++;
                }else if(player == 1 && com == 3){
                    win++;
                }else if(player == 2 && com == 1){
                    win++;
                }else if(player == 2 && com == 3){
                    lose++;
                }else if(player == 3 && com == 1){
                    lose++;
                }else if(player == 3 && com == 2){
                    win++;
                }
            }
            console.log(` 승: ${win} 무: ${equal} 패: ${lose} `)
            
            let rate = (( win / (10-equal))*100).toFixed(2);
            
            let result = document.getElementById('result');

            result.innerText = ` ${rate} ` ;
        })

    </script>
</body>

 

 

'화면 수업 정리' 카테고리의 다른 글

HTML,CSS,JS 12일차  (0) 2024.08.09
HTML,CSS,JS 11일차  (0) 2024.08.08
HTML,CSS,JS 9일차  (0) 2024.08.06
HTML,CSS,JS 8일차  (0) 2024.08.05
HTML,CSS,JS 7일차  (0) 2024.08.02