국비교육(22-23)

5일차(5)/javascript 기초 : 동적 요소 만들기

서리/Seori 2022. 10. 12. 18:04

5일차(5) javascript 기초 : 동적 요소 만들기

 

- 문서 객체를 동적으로 만들고 수정하는 실습.

 

 

먼저 console 창에서 리스트를 추가하는 실습!

마지막 노란색 부분까지 작성하면 페이지에 "사과"가 추가된다.

 

.createElement(" ") : 요소를 동적으로 만들어 요소를 추가할 수 있게 하는 함수

 

document.createElement("div")

: 콘솔창에 이렇게 <div></div>를 만들어두면 heap영역이 생겨서 key 값이 생긴다.

 

 

document.querySelector("ul").append(a);

: 그전에 'a'라는 변수에 <li>사과</li>를 만들어두었음. "ul"의 자식요소로 a를 넣은 것!

 

- 페이지 로딩시점엔 만들어지지 않았던 객체를 javascript로 원하는 시점에 끼워넣을 수 있다.
- 메모리상에서만 저장한 것이고, 파일을 수정한게 아니므로 새로고침하면 사라진다.

 

 

<예제1>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Step06_createElement.html</title>
</head>
<body>
    <h1>문서 객체 동적으로 만들기</h1>
    <input type="text" id="inputName" placeholder="이름 입력...">
    <button id="addBtn">추가</button>
    <ul>
        <li>바나나</li>
        <li>딸기</li>
        <li>복숭아</li>
    </ul>
    <script>
        /*
            input 요소에 이름을 입력하고 추가 버튼을 누르면
            입력한 이름이 ul에 추가되도록 프로그래밍 해 보세요.

            -hint
            let name=document.querySelector("#inputName").value;

            let a=document.queryElement("li");
            a.innerText="xxx";

            document.querySelector("ul").append(a);
        */

        //추가버튼을 눌렀을때 실행할 함수 등록
        document.querySelector("#addBtn").addEventListener("click", function(){
            //1. input 요소에 입력한 이름을 읽어온다.
            let name=document.querySelector("#inputName").value;
            //만일 입력하지 않았으면
            if(name == ""){
                alert("추가할 이름을 입력하세요!");
                return; //함수를 여기서 끝내라
            }
            //2. li 요소를 동적으로 만든다.
            let a=document.createElement("li");
            //3. 만든 li요소의 innerText로 1.에서 읽어온 이름을 넣어주고
            a.innerText=name;
            //4. ul요소의 자식요소로 추가하기
            document.querySelector("ul").append(a);
            //5. 입력창 초기화
            document.querySelector("#inputName").value=""; //value에 빈 문자열 넣어주기
        });

        document.querySelector("#inputName").addEventListener("keydown", function(e){
            //만일 엔터키를 눌렀으면
            if(e.keyCode==13){
                //1. input 요소에 입력한 이름을 읽어온다.
                let name=document.querySelector("#inputName").value;
                //2. li 요소를 동적으로 만든다.
                let a=document.createElement("li");
                //3. 만든 li요소의 innerText로 1.에서 읽어온 이름을 넣어주고
                a.innerText=name;
                //4. ul요소의 자식요소로 추가하기
                document.querySelector("ul").append(a);
                //5. 입력창 초기화
                document.querySelector("#inputName").value=""; //value에 빈 문자열 넣어주기
            }
        });
    </script>
</body>
</html>

- console 창에서 작성했던 내용을 페이지상의 input 요소를 사용해 사용자가 직접 리스트를 추가할 수 있도록 만들기

 

 

1. input 요소에 입력한 이름을 읽어온다.
2. li 요소를 동적으로 만든다.
3. 만든 li요소의 innerText로 1.에서 읽어온 이름을 넣어주고
4. ul요소의 자식요소로 추가하기
5. 입력창 초기화

 → 절차를 따라가며 코딩하는 연습!

 

위의 1과 5는 document.querySelector("#inputName").value; 를 똑같이 참조하고 있지만 다르다.
 1. input 요소에 입력한 value를 변수 name 에 대입한다.(대입연산자의 우측)
 5. " " 공백이 대입된다. (대입연산자의 좌측)

 

if(e.keyCode==13){ }

- input 요소에 값을 입력하고 엔터키 누르면 자동으로 등록되도록