본문 바로가기

Javascript/Javascript(2024 version)

Javascript(5) - 예제(class 추가/삭제, selectBox를 통한 이미지 선택, 데이터 출력, 주민등록정보 조회)

728x90
반응형

1) Javascript 예제

   1-1) class 추가, 삭제 예제

   1-2) selectBox를 통한 이미지 선택 예제

   1-3) 데이터 출력(table 형식) 예제

   1-4) 주민등록정보 조회 예제

 

 

 

 

 

1) Javascript 예제

1-1) class 추가, 삭제 예제

class 추가, 삭제 예제.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .highlight {
        background-color: yellow;
      }
    </style>
    <script>
      window.onload = function () {
        let hBtn = document.querySelector("#highlightButton");
        let cBtn = document.querySelector("#clearButton");

        hBtn.addEventListener("click", function () {
          // 모든 .text 클래스를 가진 요소를 선택
          const pTag = document.querySelectorAll(".text");

          for (let e of pTag) {
            // class명에 공백을 한 칸 띄고 "hightlight" 텍스트를 추가해줌!
            e.classList.add("highlight");
          }
        });
        cBtn.addEventListener("click", function () {
          // 모든 .text 클래스를 가진 요소를 선택
          const pTag = document.querySelectorAll(".text");

          for (let e of pTag) {
            // class명에서 "hightlight" 텍스트를 지워줌!
            e.classList.remove("highlight");
          }
        });
      };
    </script>
  </head>
  <body>
    <h1>querySelectorAll 예제</h1>
    <p class="text">첫 번째 문장</p>
    <p class="text">두 번째 문장</p>
    <p class="text">세 번째 문장</p>
    <div>
      <p class="text">네 번째 문장</p>
    </div>
    <button id="highlightButton">강조</button>
    <button id="clearButton">강조 제거</button>
  </body>
</html>

 

첫 접속 화면

 

"강조" 버튼 클릭 시 화면

 

 "강조 제거" 버튼 클릭 시 화면

 

 

 

1-2) selectBox를 통한 이미지 선택 예제

Ex03.예제_교수님_ver.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>select box 예제</title>
    <style>
      #imgSel {
        display: inline-block;
        width: 300px;
        height: 200px;
        margin-top: 50px;
      }
    </style>
    <script>
      function funcSel() {
        let sel = document.querySelector("#sel");
        let img = document.querySelector("#imgSel");

        for (let i = 0; i < sel.length; i++) {
          if (sel.options[i].selected == true) {
            img.src = "../HTML/1.image/file/" + sel.options[i].value;
          }
        }
      }
    </script>
  </head>
  <body>
    <select id="sel" onchange="funcSel()">
      <option value="htmlLogo.png" selected>html</option>
      <option value="cssLogo.png">css</option>
      <option value="javascriptLogo.png">javascript</option>
    </select>
    <img src="../HTML/1.image/file/htmlLogo.png" id="imgSel" />
  </body>
</html>

 

 

 

 

 

1-3) 데이터 출력(table 형식) 예제

Ex04.예제_교수님_ver.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>데이터 출력 예제</title>
    <style>
      table,
      th,
      td {
        border: 2px solid black;
        border-collapse: collapse;
        text-align: center;
        padding: 20px 100px;
      }
      table {
        margin-top: 20px;
      }
      th {
        background-color: orangered;
      }
    </style>
    <script>
      function openList() {
        let list = [
          { 이름: "홍길동", 등급: "일반회원", 가입일: "20/01/03" },
          { 이름: "손오공", 등급: "실버회원", 가입일: "22/05/05" },
          { 이름: "이순신", 등급: "골드회원", 가입일: "19/03/22" },
        ];

        let targetTable = document.querySelector("#target");
        let str = "";
        str += `<table>`;
        str += `<tr>`;
        str += `<th>이름</th>`;
        str += `<th>등급</th>`;
        str += `<th>가입일</th>`;
        str += `</tr>`;
        for (let i = 0; i < list.length; i++) {
          str += `<tr>`;
          str += `<td>${list[i]["이름"]}</td>`;
          str += `<td>${list[i]["등급"]}</td>`;
          str += `<td>${list[i]["가입일"]}</td>`;
          str += `</tr>`;
        }
        str += `</table>`;

        targetTable.innerHTML = str;
        targetTable.style.display = "block";
      }
      function closeList() {
        let targetTable = document.querySelector("#target");
        targetTable.style.display = "none";
      }
    </script>
  </head>
  <body>
    <input type="button" value="정보 보기" onclick="openList();" />
    <input type="button" value="정보 닫기" onclick="closeList();" />
    <div id="target"></div>
  </body>
</html>

 

첫 접속 화면

 

 

 "정보 보기" 버튼 클릭 시 화면

 

 

 "정보 닫기" 버튼 클릭 시 화면

 

 

1-4) 주민등록정보 조회 예제

Ex05.예제.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>주민등록번호 예제</title>
    <style>
      label {
        font-weight: bold;
      }
      #ssn {
        display: inline-block;
        margin: 0 25px;
      }
      #btn {
        display: inline-block;
        background-color: black;
        color: white;
        border-radius: 20%;
        padding: 10px;
      }
    </style>
    <script>
      // 1. 연도 구별        -->   1900년생     2000년생
      // 번호 뒷자리 첫 숫자  -->   1, 2         3, 4
      // 2. 성별 구별        -->   남자: 1, 3    여자: 2, 4
      // 3. 나이 계산

      function infoCalc() {
        let inputTag = document.querySelector("#ssn");
        let birth;
        let age;
        let nowDate = new Date();
        let gender;

        if (
          inputTag.value.slice(0, 2) <=
          parseInt(nowDate.getFullYear().toString().slice(2))
        ) {
          birth = 20 + inputTag.value.slice(0, 2);

          if (inputTag.value.slice(7, 8) == "3") {
            gender = "남자";
          } else if (inputTag.value.slice(7, 8) == "4") {
            gender = "여자";
          } else {
            alert("유효하지 않은 주민등록번호입니다. 다시 입력해주세요.");
            return;
          }
        } else {
          birth = 19 + inputTag.value.slice(0, 2);

          if (inputTag.value.slice(7, 8) == "1") {
            gender = "남자";
          } else if (inputTag.value.slice(7, 8) == "2") {
            gender = "여자";
          } else {
            alert("유효하지 않은 주민등록번호입니다. 다시 입력해주세요.");
            return;
          }
        }

        age = nowDate.getFullYear() - parseInt(birth);

        let divTag = document.querySelector("#result");
        divTag.innerHTML = `${birth}년생 ${age}세 <span>${gender}</span>입니다.`;
        divTag.style["font-size"] = "40px";
        divTag.style["margin-top"] = "30px";
        divTag.style["margin-left"] = "20px";

        let spanTag = document.querySelector("span");
        spanTag.style.color = "blue";
      }
    </script>
  </head>
  <body>
    <label for="ssn">주민등록번호</label>
    <input type="text" id="ssn" placeholder="ex. 000000-0000000" />
    <input type="button" id="btn" value="정보 출력" onclick="infoCalc();" />
    <div id="result"></div>
  </body>
</html>

 

 첫 접속 화면

 

 "정보 출력" 버튼 클릭 시 화면

 

 

 

 

 

 

 

Ex05.예제_교수님_ver.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>주민등록번호 예제</title>
    <style>
      label {
        font-weight: bold;
      }
      #ssn {
        display: inline-block;
        margin: 0 25px;
      }
      #btn {
        display: inline-block;
        background-color: black;
        color: white;
        border-radius: 20%;
        padding: 10px;
      }
    </style>
    <script>
      // 1. 연도 구별        -->   1900년생     2000년생
      // 번호 뒷자리 첫 숫자  -->   1, 2         3, 4
      // 2. 성별 구별        -->   남자: 1, 3    여자: 2, 4
      // 3. 나이 계산

      window.onload = function () {
        let btn = document.querySelector("#btn");

        btn.addEventListener("click", function () {
          let result = document.querySelector("#result");
          let ssn = document.querySelector("#ssn").value;
          let year = parseInt(ssn.substring(0, 2));
          let gender = parseInt(ssn.charAt(7));

          let d = new Date();
          let nowYear = d.getFullYear();

          if (gender == 1 || gender == 2) {
            year = 1900 + year;
          } else if (gender == 3 || gender == 4) {
            year = 2000 + year;
          }

          if (gender == 1 || gender == 3) {
            gender = "남자";
          } else {
            gender = "여자";
          }

          let age = parseInt(nowYear) - parseInt(year);

          result.innerHTML = `${year}년생 ${age}세 <mark>${gender}</mark>입니다.`;
        });
      };
    </script>
  </head>
  <body>
    <label for="ssn">주민등록번호</label>
    <input type="text" id="ssn" placeholder="ex. 000000-0000000" />
    <input type="button" id="btn" value="정보 출력" />
    <div id="result"></div>
  </body>
</html>

 

 첫 접속 화면

 

 "정보 출력" 버튼 클릭 시 화면