인프런 커뮤니티 질문&답변

gangsugi님의 프로필 이미지
gangsugi

작성한 질문수

자바스크립트 ES6+ 기초 핵심 문법

질문드립니다.

해결된 질문

작성

·

437

1

강의 잘 듣고 있습니다.

가위바위보 게임에서 텍스트로 한것을 가위바위보 이미지로 하는 경우는 어떻게 해야 하나요?

 

이렇게 되어 있는 것을....

<button class="scissors">가위</button>
<button class="rock">바위</button>
<button class="paper">보</button>

<button class="scissors"><img src="img/game1.png" alt="가위"></button>
<button class="rock"><img src="img/game2.png" alt="바위"></button>
<button class="paper"><img src="img/game3.png" alt="보"></button>
console.log(event.target.innerText);

이 부분을 어떻게 바꾸어 하는지....

답변 1

0

이룸코딩님의 프로필 이미지
이룸코딩
지식공유자

안녕하세요 gangsugi님.

기존 코드는 버튼의 텍스트를 가져와서 비교를 하기 때문에 innerText 값을 가져왔었습니다. 하지만 질문 주신 것처럼 텍스트는 사용하지 않고 버튼을 이미지로 변경하고 싶으시다면, dataset 기능을 활용하여 요소에 값을 넣고 가져다 비교하는 방법으로 변경해보세요.

dataset 사용법

다음 코드와 같이 data-[원하는이름]="값" 으로 값을 입력하세요.

<button class="scissors">
  <img src="img/game1.png" alt="가위" data-choice="가위" />
</button>

<button class="rock">
  <img src="img/game2.png" alt="바위" data-choice="보" />
</button>

<button class="paper">
  <img src="img/game3.png" alt="보" data-choice="바위" />
</button>

그 다음에 자바스크립트에서 접근하실 때는 다음 코드처럼 dataset.[정했던이름]으로 접근하실 수 있습니다.

const user = event.target.dataset.choice;
console.log(user);

로직은 얼마든지 바꿀 수 있습니다. (그냥 클래스 이름으로 가져와서 비교를 한다던지 등) 하지만 기존 코드를 변경하지 않는 선에서 버튼만 이미지로 변경하시려면 이 방법이 제일 간단한 듯 합니다. ^^

gangsugi님의 프로필 이미지
gangsugi
질문자

아 data 속성을 이용하는 방법이 있었네요...빠른 답변 감사드립니다.

 

gangsugi님의 프로필 이미지
gangsugi

작성한 질문수

질문하기