자주 쓰는 Javascript 정리 / Javascript 문법

자주 쓰는 Javascript

문자열 관련 처리

https://0songha0.github.io/web-dev/2022-03-10-1

Javascript로 CSS 스타일 변경

https://0songha0.github.io/web-dev/2022-03-13-1

서버 요청 전 처리

https://0songha0.github.io/web-dev/2022-03-24-1

Javascript로 HTML 요소 추가

https://0songha0.github.io/web-dev/2023-01-25-1

Javascript 정규표현식

https://0songha0.github.io/web-dev/2022-08-01-1

document ready 완료 후 실행

<script>
    document.addEventListener("DOMContentLoaded", function() {
        // 실행 코드
    });
</script>

엔터 키 이벤트 처리

// 인풋에 엔터 키 이벤트 발생 시 처리
document.getElementById("인풋ID").addEventListener("keyup", function(event) {
    if (event.key === "Enter") {
        함수명();
    }
});

change 이벤트 부여

document.getElementById('인풋ID').addEventListener('change', 동작함수);

단, hidden 인풋에는 change 이벤트를 부여해도 동작하지 않습니다.

자식 요소 찾기

const keywordList = document.getElementById("keywordDiv").children;

for (let i = 0; i < keywordList.length; i++) {
    console.log(keywordList[i]);
}

childNodes : 주석, 텍스트 노드도 자식 노드로 포함하여 반환합니다.
children : 비 요소 노드를 제외한 자식 노드들만 반환합니다.

부모 노드 삭제

document.getElementById("ID명").parentNode.remove();

현재 페이지 새로고침

location.reload(true);
location.href = location.href;
history.go(0);

위 3가지 방법 중 아무거나 사용하면 됩니다.

다른 페이지로 리다이렉트

window.location.href = "http://URL";

특정 요소로 스크롤 이동

location.href = "#" + 요소Name;

페이지 로드 시 원하는 요소 위치로 스크롤을 이동하려면, 위 로직을 document ready 안에 넣으면 됩니다.

라디오 체크 처리

document.getElementById("라디오InputID").checked = true;

토글 버튼 클릭 이벤트 부여

<c:forEach items="${itemsList}" var="row" varStatus="i">
  </div>
      <div class="canvas-btn-wrap">
        <div class="toggle-wrap">
          <div class="toggle-btn type02">
            <input type="checkbox" class="checkbox" onclick="togleCanvas(this, ${row.itemId})">
            <div class="knobs"></div>
            <div class="layer"></div>
          </div>
        </div>
      </div>
  </div>
</c:forEach>

위 캔버스 열기/닫기 버튼 토글 버튼 checkbox 클릭 시 아래 javascript 함수가 동작하도록 합니다.

function togleCanvas(checkbox, itemId) {
  if (checkbox.checked) {
    openCanvas(itemId);
  } else {
    closeCanvas(itemId);
  }
}

클래스명을 가진 모든 요소에 반복

const elements = document.querySelectorAll(".클래스명");

elements.forEach(function(element, index) {
    element.setAttribute("id", "ID명_" + (index + 1)); // ID 부여
    element.classList.add("신규클래스명"); // 클래스명 부여
    element.value = "값"; // 값 설정
});

querySelectorAll는 NodeList를 반환하여 forEach를 사용할 수 있고,
getElementsByClassName은 HTMLCollection를 반환하여 forEach를 사용할 수 없습니다.

ID로 찾은 요소에 클래스명 있는지 확인

const dom = document.getElementById("ID명");
			
if (dom !== null && dom.classList.contains("클래스명")) {
  // 클래스명이 있는 경우 처리
}

ID가 특정문자열로 시작하는 Dom의 수

const elements = document.querySelectorAll('[id^="특정문자열"]');

console.log(elements.length);

Javascript 이벤트 강제 발생 처리

change 이벤트 강제 발생

document.getElementById("ID명").dispatchEvent(new Event("change"));

click 이벤트 강제 발생

document.getElementById("ID명").click();

javascript 반복문 정리

for 반복문

for (let i = 0; i < list.length; i++) {
    const obj = list[i];
}

인덱스 값을 사용하여 배열의 요소 값을 얻을 수 있습니다.

for…in 반복문

const obj = { a: 1, b: 2, c: 3 };

for (let key in obj) {
  console.log(key); // "a", "b", "c"
  console.log(obj[key]); // 1, 2, 3
}

순서가 보장되지 않으며, 키 문자열로 반복하여 객체의 속성을 열거할 때 주로 사용합니다.

for…of 반복문

const arr = [1, 2, 3];

for (let value of arr) {
  console.log(value); // 1, 2, 3
}

순서가 보장되며, 반복 가능한 객체의 값을 직접 처리할 때 사용합니다.
for 반복문이나 forEach 메서드와 달리, 인덱스 값을 얻을 수 없다는 단점이 있습니다.


javascript 날짜 계산

년, 월의 마지막 일자 계산

function getLastDay(year, month) {
  // 다음 달의 이전 날로 설정 (month는 0부터 시작)
  let date = new Date(year, month, 0);

  // 마지막 일자 반환
  return date.getDate();
}

2024~2025년 달력 기준으로 테스트 완료하였습니다.

Leave a comment