공부/javascript

2022.05.16 - javascript 퀴즈(5) / HEX CODE 배경 색 랜덤 변경

기묜몬 2022. 5. 16. 12:19

/*

  다음과 같은 조건을 만족하는 화면을 만들어 주세요!
  
  📌 버튼 클릭시 랜덤한 HEX CODE가 배경 색으로 변경되어야 합니다.
  📌 현재 HEX CODE가 <p> 태그의 텍스트로 표시되어야 합니다.

*/

[ html ] 

<div class="wrapper">
  <p>HEX CODE: #3474FF</p>
  <button>Change Color</button>
</div>

[ CSS ] 

.wrapper {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100vw;
  height: 100vh;
  background-color: #3474FF;
}

p {
  font-size: 50px;
}

button {
  font-size: 20px;
  padding: 10px;
  border-radius: 6px;
}

[ JS ] -> html, css는 건들지말고, js만 변경하여 코드 작성 

/*

  다음과 같은 조건을 만족하는 화면을 만들어 주세요!
  
  📌 버튼 클릭시 랜덤한 HEX CODE가 배경 색으로 변경되어야 합니다.
  📌 현재 HEX CODE가 <p> 태그의 텍스트로 표시되어야 합니다.

*/
const btn = document.querySelector("button");
const Wrapper = document.querySelector(".wrapper");
const text = document.querySelector("p");


btn.addEventListener("click", function(){
  const arr = [0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f"];
  let code = "#";
  for(let i=0; i<6; i++) {
    const random = Math.floor(Math.random() * arr.length);
    code += arr[random]; 
  }
  Wrapper.style.backgroundColor = code; 
  text.textContent = "HEX CODE : " + code;
  
});

==> js 풀이

1. 버튼, 배경색을 변경할 wapper 부분, 글자를 변경할  p 태그를 각각 변수로 선언

2. btn (버튼) 클릭시 실행될 함수를 작성한다.

3. hex code 가 랜덤으로 생성될 수 있도록 숫자0~1, 알파벳a~f 를 담아 배열을 만들어준다.

4. hex code 에 필수로 들어가는 "#" 을 선언하고

5. 0~6개의 코드가 랜덤하게 반복되도록 btn 함수안에 반복문 작성 ( 이때, math.floor 로 소수점 이하를 버리고 정수로 만들어준다.)

6. code("#") 과 random 숫자+알파벳 더한 결과를 더하기 할당 연산자(+=)로

오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당한다.

7. 나온 랜덤 결과값으로 배경색을 변경할 수 있게 style 적용하고

8. 나온 랜덤 결과값으로 textcontent를 통해 텍스트를 바꿔준다.