Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react-query
- 그리디
- 정렬
- 라이프사이클
- 빅오
- 스택
- cookie
- never타입
- js알고리즘
- 해쉬
- 버블정렬
- 큐
- next.js
- styled-components
- Algorithm
- tailwindcss
- nestjs
- react
- TypeScript
- 블로그만들기
- isNaN
- aws lightsail
- NextAuth
- JavaScript
- 투포인터
- 슬라이딩윈도우
- nextjs
- typscript
- textarea autosize
- 알고리즘
Archives
- Today
- Total
far
[Javascript] 연속된 클릭 막기 본문
작업을 하다 전송 버튼을 연타하면 데이터를 받아올 때 꼬이는 현상이 나타나는걸 발견했다. 이런 경우 클릭을 연속해서 할 수 없도록 막아버리는게 최선의 방법이라고 생각했다.
index.html
<button id="langBtn" type="button">
<i class="gg-arrows-exchange"></i>
</button>
<!-- 생략 -->
<div class="translateSelect__area">
<div style="margin-top: 10px;"></div>
<pre id="result"></pre>
</div>
HTML은 설명에 필요한 부분만 남겼다.
translate.js
const langBtn = document.getElementById('langBtn');
const result = document.getElementById('result');
//...
let clickable = true;
langBtn.addEventListener("click", () => {
if (clickable === true && result.textContent !== '') {
clickable = false
resultTranslate() // API 연결 함수 (생략)
setTimeout(() => {
clickable = true
}, 300)
}
});
먼저 clickable이라는 변수를 만들어 boolean값을 선언하고 이벤트리스너 내부에 if문을 만든다. if문을 통과하면 clickable을 바로 false로 바꿔주고 데이터를 서버로 전송한 뒤 setTimeout함수를 사용해 true로 바꿔준다. 그러면 이제 전송 버튼을 연타해도 0.3가 지나기 전에는 서버로 데이터를 전송 할 수 없게 된다.
'Javascript' 카테고리의 다른 글
[Javascript] 클래스 문법 (0) | 2023.05.14 |
---|---|
[Javascript] textarea Autosize 만들기 (스크롤이 자동으로 올라가는 현상 해결하기) (0) | 2023.04.24 |
[Javascript] 외부 클릭시 태그 닫기 + 커스텀 셀렉트 (0) | 2023.04.05 |
[Javascript] 클로저 (0) | 2023.03.30 |
[Javascript] innerHTML, innerText, textContent 차이 (0) | 2023.03.30 |
Comments