본문 바로가기

스크립트/JavaScript

[JS] 간단한 예제1

[1. 예제 설명]

  1. JS 에서 배열 및 <ul> <li> element 생성 및 body 에 추가하기.
  2. JS 에서 <select> 에 option 추가하기.
    => 기타 event 처리
  3. JS 에서 <textarea> 에 내용 채우기
    => 개행 처리?

[2. 예제-1]

<!-- index.html -->

<html>
    <head>
        <title>Tester</title>
        <script src="main.js"></script>
    </head>
    <body>
        <!-- empty -->
    </body>
</html>

 

// main.js
// Array
const texts = ["Hi", "Hello", "Bye", "Morning", "Evening"];

window.addEventListener("DOMContentLoaded", (event) => {
    console.log(event);

    const myul = document.createElement("ul");
    for (let i=0; i<texts.length; i++) {
        const myui = document.createElement("li");

        // String formatting.
        myui.innerText = `${texts[i]} ${i}`;
        myul.appendChild(myui);
    }
    document.body.appendChild(myul);
});

 


[2. 예제-2]

// Array
const texts = ["Hi", "Hello", "Bye", "Morning", "Evening"];

window.addEventListener("DOMContentLoaded", (event) => {
    console.log(event);

    const m_select = document.createElement("select");

    for (let i=0; i < texts.length; i++) {
        const m_option = document.createElement("option");
        m_option.innerText = `${texts[i]}_${i}`;
        // m_option.text = `${texts[i]}_${i}`; // 혹은 이렇게.

        m_select.append(m_option);
    }

    for (let i=0; i < m_select.length; i++) {
        console.log(m_select.options[i].value);
        // 필요 시, m_select.remove(i); 를 통해 제거할 수 있다.
    }

    document.body.append(m_select);

    // 최초 설정 값 가져오기
    console.log("first option " + m_select.firstChild.value);
    // 다른 옵션을 선택 한 경우.
    m_select.addEventListener("change", (event) => {
        console.log(event.target.value);
    });
});

[2. 예제-3]

// Array
const texts = ["Hi", "Hello", "Bye", "Morning", "Evening"];

window.addEventListener("DOMContentLoaded", (event) => {
    const m_textarea = document.createElement("textarea");
    m_textarea.style.resize = "none";
    m_textarea.style.width = "200px";
    m_textarea.style.height = "50px";
    m_textarea.readOnly = true;

    // Output
    // ~~~~~~~
    // Hi
    // Hello
    // Bye
    // Morning
    // Evening
    // ~~~~~~~
    for (let i = 0; i < texts.length; i++) {
        m_textarea.textContent += texts[i];
        m_textarea.textContent += "\n";
    }
    document.body.append(m_textarea);   
});

[3. 기타 설명]

  • DOMContentLoaded 는 index.html 내 body 가 모두 로딩 된 상태에서 발생하는 이벤트(?)
  • 따라서, main.js 의 import 위치가 index.html 에서 body 보다 먼저 오면, 필요하다.
  • 그러나 main.js 의 import 위치가 body 의 가장 마지막이면 굳이 필요하지는 않다.