클릭시 배경화면이 변경

김우성·2021년 8월 20일
0

JavaScript

목록 보기
13/17
post-thumbnail

클릭시 배경화면이 변경



흰색 -> 다른색, 바뀐 색의 hexcode의 값이 같이 노출


html


<body>
	<h1>HEX Color : <span id="hex"></span></h1>
	<button id="btn" type="button">클릭</button>
</body>

헥사코드의 구조

예시 : #000fff;

숫자 : 0 ~ 9, 알파벳 : a ~ f
#을 제외하고 6글자 조합(숫자와 알파벳 조합)

코드 구상

#을 기준으로해서 배열에서 데이터를 뽑음 (만약 0이면 # + 0 = #0)

#0을 기준으로 만약 f를 뽑았으면 #0 + f = #0f

이런 방식으로 계속 글자를 완성시킴

총7개 이후로 더이상 데이터를 가져오면 안됨


# + 0 = #0;
#0 + f = #0f;
#0f + a = #0fa;
#0fa + b = #0fab;
#0fab + c = #0fabc;
#0fabc + d = #0fabcd;

css id 불러오기

자바스크립트에서 사용할 수 있도록 css id를 불러와서 변수에 넣기


var hex = document.getElementById("hex");
var btn = document.getElementById("btn");

버튼 클릭시 이벤트 발생

변수 btn을 클릭시 함수실행

함수 안에다 코드를 클릭시 배경화면이 바뀌는 코드를 짜면된다


btn.addEventListener('click', function() {

});

배열과 변수 만들기

배열을 하나 만듬 (0 ~ 9, a ~ f)

color라는 변수를 만들어서 기본값으로 #을 넣어줌


btn.addEventListener('click', function() {

	var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f"];
	var color = '#';

});

반복문

변수 i에 0을 전달하고 6미만까지 반복(총 6회), i는 1씩 증가

Math.random은 0 ~ 1 미만 숫자 중 랜덤으로 뽑아낸다

arr.length를 곱했으니 그 값은 16 미만 실수값들 중 하나가 될 것이다

floor로 소수점이하를 버려주면 그 값은 0 ~ 15 값 중 하나가 될 것이다.

이 랜덤 값을 arr 배열의 데이터 좌표로 사용하면 arr 배열에 있는 데이터 중 좌표에 맞는 값이 나온다( arr[random])

반복문에 의해 이 과정을 6번 반복하게 되고 반복될때마다 += 에 의해 color값 더해지고 들어가게된다

결과적으로 # + arr 배열 중 6개의 랜덤 데이터


btn.addEventListener('click', function() {
	
	var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f"];
	var color = '#';

	for(var i = 0; i < 6; i++) {
		var random = Math.floor(Math.random() * arr.length);
		color += arr[random];
	}

});

for문 안쪽에서 console.log를 하면 반복문이 돌떄마다 콘솔로그로 찍어내고 밖에서 console.log하면 완성본만 나타남

btn.addEventListener('click', function() {

	var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f"];
	var color = '#';

	for(var i = 0; i < 6; i++) {
		var random = Math.floor(Math.random() * arr.length);
		color += arr[random];

		// 안 : console.log(color);
	}

	// 밖 : console.log(color);
    
});    

배경바꾸기, 글자 표시하기

body태그에 style - 배경화면에 color 변수(반복문으로 뽑아낸 헥사코드)를 적용

자바스크립트에서는 textContent를 사용하여 글자를 삽입할 수 있다

아까 불러온 hex변수(h1)에 textContent를 사용하여 글자 삽입하기


btn.addEventListener('click', function() {

	var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f"];
	var color = '#';

	for(var i = 0; i < 6; i++) {
		var random = Math.floor(Math.random() * arr.length);
		color += arr[random];        
        
	}

	document.body.style.backgroundColor = color;
	hex.textContent = color;

});




추가 응용



코드를 변형

두번째 인수에 익명함수 대신 만들어둔 함수를 넣을 수 있다

클릭했을 때 두번째 인수로 전달된 createColor라는 함수를 호출해라

여기서 함수명만 들어가있고 호출기호는 없다( 호출기호 : 함수명() )


btn.addEventListener('click', createColor);
	
function createColor() {

	var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f"];
	var color = '#';

	for(var i = 0; i < 6; i++) {
		var random = Math.floor(Math.random() * arr.length);
		color += arr[random];
        
	}
    
	document.body.style.backgroundColor = color;
	hex.textContent = color;
}


두번째 인수로 익명함수를 전달하여 다이렉트로 기능을 만들 수도 있고, 기능 자체를 함수이름으로 작성해서 지금과 같이 두번째 인수로 함수이름을 전달하는 방식으로도 기능을 만들 수 있다.

실무에선 두번째 방식 많이 사용

createColor도 호출기호도 없고 클릭시 함수를 호출하기 때문에 콜백함수이다

profile
매우 긍정적인 개발자

0개의 댓글

관련 채용 정보