본문 바로가기
국비학원

[국비지원] KH 정보교육원 62일차

by 도전하는 개발자 2022. 6. 25.

 오늘 드디어 자바스크립트가 끝났다. 1주 내내 자바스크립트를 배웠는데 자바와 조금 헷갈리는 부분이 있는데 혼동하지 않도록 주의해야겠다. 다음주부터는 제이쿼리를 배우게 되는데, 리액트를 배우고 싶지만 커리큘럼 상 아쉽게 됐다. 현재 교육 단위에서는 제이쿼리에 집중하고 나중에 추가적으로 리액트, 부트스트랩 사용법을 익혀야겠다. 오늘로 개강 3달차가 되었는데, 이제 파이널 조 구성을 하게 되었다. 아직 확정은 아니지만 뛰어나신 분들과 얘기가 되고 있는거 같아서 정말 다행이다. 나도 조에서 제 역할을 잘 하려면 더 노력해야한다.


---

innerHTML과 innerText , textContent차이 구분하기!

innerHTML은 HTML태그 적용 가능
innerText, textContent는 태그 적용되지 않는다.

---


객체를 생성하는 방법

1. 객체 변수를 이용하여 객체생성
지난 시간에 배움!!!

 

2. 생성자 함수를 이용하여 객체생성

오늘 배우자!!!



Object 함수 이용

 

<body>
    <p id="carname"></p>
    <p id="carcolor"></p>
    <p id="carspeed"></p>
    
    <script>
        var car = new Object();      // 객체 생성
        
        car.name = 'Sonata';         // 속성 정의
        car.speed = 100;
        car.color = 'blue';

        car.speedup = function () {  // 메소드 정의
            return this.speed + 10;
        };

        console.log('car:', car);
    </script>
</body>



생성자 함수정의

 

 

<body>
    <p>[Hong's Car]</p>
    <p id="carname"></p>
    <p id="carcolor"></p>
    <p id="carspeed"></p>
    
    <p>[Kim's Car]</p>
    <p id="carname2"></p>
    <p id="carcolor2"></p>
    <p id="carspeed2"></p>

    <script>
        function Car(name, color, speed) {
            this.name=name;
            this.color=color;
            this.speed=speed;
            
            this.speedup=function() {
                return this.speed+10;
            };
            
            this.speeddown=function() {
                return this.speed-10;
            };
        }
        
        var Hongcar=new Car('Sonata', 'blue', 100);
        var Kimcar=new Car('Jeep', 'red', 70);
        
        var cname=document.getElementById("carname");
        cname.textContent='자동차 이름 : ' + Hongcar.name;
        
        var colname=document.getElementById("carcolor");
        colname.textContent='자동차 색상 : ' + Hongcar.color;
        
        var cspeed=document.getElementById("carspeed");
        cspeed.textContent='자동차 속도 : ' + Hongcar.speedup();
        
        var cname=document.getElementById("carname2");
        cname.textContent='자동차 이름 : ' + Kimcar.name;
        
        var colname=document.getElementById("carcolor2");
        colname.textContent='자동차 색상 : ' + Kimcar.color;
        
        var cspeed=document.getElementById("carspeed2");
        cspeed.textContent='자동차 속도 : ' + Kimcar.speedup();
    </script>
</body>




**JSON : JavaScript Object Notation(기호)**
CR                                                    LF

<enter> : 2개 코드가 발생 (CR + LF) => CRLF (on windows)
<enter> : 1개 코드가 발생 (only LF)  => Mac/Linux/UNIX

JS객체 => JSON 문자열로 변환하는 과정 --> 객체의 직렬화 
JSON.stringify();

JSON 문자열 => JS객체로 환원하는 과정 --> 객체의 역직렬화 
JSON.parse();

---


배열객체



배열내객체구조

 

 

<body>
    <p>[Car1]</p>
    <p id="data10"></p>
    <p id="data20"></p>
    <p id="data30"></p>

    <p>[Car2]</p>
    <p id="data11"></p>
    <p id="data21"></p>
    <p id="data31"></p>
    
    <p>[Car3]</p>
    <p id="data12"></p>
    <p id="data22"></p>
    <p id="data32"></p>
    
    <script>
        // 1. 객체를 원소로 가지는 배열 리터럴 생성
        var car = [
            { name: 'Sonata', color: 'blue', speed: 100 },
            { name: 'Jeep', color: 'red', speed: 70 },
            { name: 'Passt', color: 'white', speed: 150 }
        ]

        // 객체를 출력할 때 `` 사용하면 객체 내부를 볼 수 없다
        console.clear();
        console.log('car', car);
        
        for (let i = 0; i < 3; i++) {
            let cname = document.querySelector("#data1" + i);
            cname.textContent = '자동차 이름 : ' + car[i].name;

            let colname = document.querySelector("#data2" + i);
            colname.textContent = '자동차 색상 : ' + car[i].color;

            let cspeed = document.querySelector("#data3" + i);
            cspeed.textContent = '자동차 속도 : ' + car[i].speed;
        } // for 
    </script>
</body>



Array 생성자 배열 객체 구조

 

다차원 배열을 행렬로 생각하면 헷갈린다!!!

 

<body>
    <p id="car"></p>

    <p>[Car1 속성]</p>
    <p id="car0"></p>

    <p>[Car2 속성]</p>
    <p id="car1"></p>

    <p>[Car3 속성]</p>
    <p id="car2"></p>
    
    <script>
        var car = new Array(
            ['Sonata', 'blue', 100],
            ['Jeep', 'red', 70],
            ['Passt', 'white', 150]
        );

        console.log('car:', car);
        
        var cname = document.querySelector("#car");
        cname.textContent = "car[2][1] : " + car[2][1];
        
        for (let i = 0; i < 3; i++) {
            let cname = document.querySelector("#car" + i);
            cname.textContent = car[i];
        }
    </script>
</body>


---

Date 객체


Date 생성자의 작성 형식

 

<body>
    <p id="d1"></p>
    <p id="d2"></p>
    <p id="d3"></p>
    <p id="d4"></p>

    <script>
        // 1. 기본 생성자
        document.querySelector("#d1").innerHTML = new Date();
    
        // 2. 1970.01.01 (UTC) 이후의 밀리초로 날짜와 시간 생성
        document.querySelector("#d2").innerHTML = new Date(1491803527400);
    
        // 3. 날짜 형식의 문자열로 날짜 객체 생성
        document.querySelector("#d3").innerHTML = new Date("October 15, 2018 06:18:07");
    
        // 4. 날짜를 지정해서 날짜 객체 생성 *주의사항 : 월(month)은 0부터 시작
        document.querySelector("#d4").innerHTML = new Date(2018, 11, 25, 18, 30, 29);   
    </script>
</body>



<body>
    <div id="digClock"></div>
    
    <script>
        function digClock() {
            let now = new Date();   // get now

            // 날짜와 시간 조합
            let day = now.getMonth() + 1 + "월 " + now.getDate() + "일 ";
            let time = now.getHours() + "시 " + now.getMinutes() + "분 " + now.getSeconds() + "초";

            // Text Node 조합
            document.querySelector("#digClock").innerHTML = day + time;
        } // digClock
               
        setInterval('digClock()', 1000); // setTimeout과 동일 but 영속적 주기로 핸들러 호출!
    </script>
</body>


----

문서 객체 모델 (DOM)
웹 문서를 메모리로 읽어 들여 트리 구조로 변환
문서의 각종 요소는 요소 노드로, 텍스트는 텍스트 노드로 변환
변환된 트리 구조를 이용하면 자바스크립트로 웹 문서를 조작할 수 있음

 


문서객체생성

 

 

<head>
    <script>
        function add() {
            console.clear();
            console.group('add');

            let header = document.createElement('h3');        // 요소 노드(<h3>태그) 생성
            let textNode = document.createTextNode('내 이름은 홍길동입니다.');    // 텍스트 노드 생성
            
            header.appendChild(textNode);          // 요소 노드의 자식으로 텍스트 노드 추가
            document.body.appendChild(header);     // <body> 태그에 header(<h3>태그) 자식으로 추가

            console.groupEnd();
        }; // add
    </script>
</head>

<body>
    <!-- 이벤트를 처리하기 위해 필요한 4가지
        1) E.target     : <a> 태그
        2) E.type       : 마우스 click
        3) E.listener   : onclick 속성
        4) E.handler    : add() 함수 -->
        
    <a href="#" onclick="javascript:add()">당신의 이름은 무엇입니까?</a>

    <!-- 새로운 노드 요소가 여기에 추가된다 -->
</body>


문서 객체의 속성값을 설정
객체 변수 사용: 객체변수.속성=‘값’;
속성 메소드 사용: setAttrbute(속성, 값);

 

<head>
    <script>
        function add() {
            let img = document.createElement('img');
            
            img.setAttribute('src', 'html5.jpg');   // img.src = 'html5.jpg';
            img.setAttribute('width', 100);         // img.width = 100;
            img.setAttribute('height', 122);        // img.height = 122;
            
            // <body> 태그에 <img> 태그를 자식으로 추가 -> 그 즉시 재렌더링
            document.body.appendChild(img);
        };
    </script>
</head>

<body>
    <a href="#" onclick="add()">[이미지 추가]</a>
</body>

 


문서 객체 스타일 변경
document.getElementById("id").style.속성명="속성값";

 

<head>
    <script>
        
        function textstyle() {
            let p = document.querySelector("#msg");

            p.style.color = "blue";
            p.style.fontSize = "30px";
            p.style.fontStyle = "italic";

            // document.querySelector("#msg").style.color = "blue";
            // document.querySelector("#msg").style.fontSize = "30px";
            // document.querySelector("#msg").style.fontStyle = "italic";
        };
        function texthidden() {
            document.querySelector("#msg").style.display = "none";
            // document.querySelector("#msg").style.visibility = "hidden";
        };
        function textvisible() {
            document.querySelector("#msg").style.display = "block";
            // document.querySelector("#msg").style.visibility = "visible";
        };
    </script>
</head>

<body>
    <p id="msg">문서 객체 스타일 변경하기</p>

    <input type="button" onclick="textstyle()" value="텍스트 스타일 변경">
    <input type="button" onclick="texthidden()" value="텍스트 숨기기">
    <input type="button" onclick="textvisible()" value="텍스트 보이기">
</body>



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