🏆토이 프로젝트에서 생긴 일

[Spring] mustache에서 어떤 버튼이 클릭 되었는지 아는 방법 (target 인식)

2023. 9. 30. 00:10
반응형

 

안녕하세요.

 

토이 프로젝트에서는 백엔드만 하는 것이 아닌 프론트도 하기 때문에 (대략 그림 그리기정도지만^^) 고려해야할 점이 참 많습니다.

 

 

그 중 곤욕을 조금 겪었던 게 있는데 소개 해볼까합니다.

 

 

머스타치에서 button이 클릭되면 아래 js 파일로 가 ajax를 통해 값을 보내줘야합니다. 

그런데 버튼이 여러 개이기 때문에 어떻게 해야하지? 싶었습니다. 

{{#friends}}
	<tbody>
    	<tr>
    		<td>{{name}}</td>
    		<td>{{uuid}}</td>
    		<td><button value="{{uuid}}" type="button" class="btn btn-outline-secondary">친구 요청</button></td>
    	</tr>
    </tbody>
{{/friends}}
let button = document.getElementById("request");
let friendId = document.getElementById("request");

button.onclick = function () {
    $.ajax({
        type: "POST",
        url: `/friend/request/${friendId.value}`,
    })
    button.disabled = true;
}

이 것도 꼼수를 써서 button의 value 값에 친구의 uuid를 넣어놓고 button id를 가져와서 클릭되면 서버로 보내지게 만들었습니다.

 

그런데 이렇게 되면 첫번째 버튼만 인식이 됩니다. 왜냐하면 id로 객체를 받았기 때문입니다.

 

 

 

 

그래서 event.target을 써보기로 했습니다.

onclick을 해서 함수를 불러봤는데 왜인지 인식이 되지 않았습니다. 

<td><button onclick="click(this)" value="{{uuid}}" type="button" class="btn btn-outline-secondary">친구 요청</button></td>
function click(e) {
	console.log(e.target);
}

 

 

그래서 모든 버튼을 querySelectAll로 받아온 뒤, forEach() 로 모든 버튼에 addEventListener를 넣어줬습니다. 그 이벤트 리스너에는 클릭이벤트를 넣어 어떤 버튼이 클릭이 되었는지 받아오고 그 안의 value 값을 가져오는 방식으로 해결했습니다. 

document.querySelectorAll(".btn").forEach(function (button) {
    button.addEventListener("click", function (event) {
        let friendId = event.target;
        console.log(friendId)
        $.ajax({
            type: "POST",
            url: `/friend/request/${friendId.value}`,
        })
        button.disabled = true;
    })
})

 

이제는 두 번째 버튼을 눌러도 잘 인식되어 친구 추가가 됩니다.

반응형
저작자표시 (새창열림)

'🏆토이 프로젝트에서 생긴 일' 카테고리의 다른 글

[Spring] Spring Security 를 사용하여 OAuth2 와 JWT를 구현해보자  (1) 2023.12.08
[Spring] 에러를 해결해보자 - org.springframework.beans.factory.beandefinitionstoreexception: failed to parse configuration class  (0) 2023.11.09
[Spring] JPA 공부를 열심히 해야 하는 이유 (친구 추가 기능 설계)  (0) 2023.09.29
[Spring] /board로 이동하면 댓글을 어떻게 보여주지? (스프링 댓글 구현)  (2) 2023.09.25
'🏆토이 프로젝트에서 생긴 일' 카테고리의 다른 글
  • [Spring] Spring Security 를 사용하여 OAuth2 와 JWT를 구현해보자
  • [Spring] 에러를 해결해보자 - org.springframework.beans.factory.beandefinitionstoreexception: failed to parse configuration class
  • [Spring] JPA 공부를 열심히 해야 하는 이유 (친구 추가 기능 설계)
  • [Spring] /board로 이동하면 댓글을 어떻게 보여주지? (스프링 댓글 구현)
pkyung
pkyung
pkyung
성장하는 중
pkyung
전체
오늘
어제
  • 분류 전체보기
    • 🏆토이 프로젝트에서 생긴 일
    • 🤿백엔드 내실 채우기
    • 🍫카카오 테크 캠퍼스 2기 BE
    • 🍀spring
      • 스프링 입문
      • 스프링 핵심원리 기본
      • 스프링 jpa
      • 🐛debug
    • 🔒보안
    • 🌎infra
      • docker
      • kubernetes
      • cloud
    • 🌐web
      • HTTP 웹 기본 지식
    • 🔑알고리즘
      • baekjoon
      • programming language
    • 🎞️프로젝트
      • android
      • flutter
    • 📚수업
      • 교양과목
    • 💾database
    • ⚙settings
    • 2023 여름 모각코 - 절개와지조
    • 2024 겨울 모각코 - 내 장점은 algorit..

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문자열
  • 자바문자열
  • 백준
  • 스택
  • 스프링부트
  • 파이썬
  • 카카오테크캠퍼스
  • Security
  • python
  • spring
  • JPA
  • sql
  • 김영한
  • 소수
  • BFS
  • 코드리뷰
  • 자바
  • springboot
  • 데이터베이스
  • nginx
  • 스프링기본
  • 스프링
  • be
  • 객체지향
  • Docker
  • 객체지향의사실과오해
  • HTTP
  • Java
  • mysql
  • 카테캠

최근 댓글

최근 글

hELLO · Designed By 정상우.
pkyung
[Spring] mustache에서 어떤 버튼이 클릭 되었는지 아는 방법 (target 인식)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.