· FRONT-END/└ JS
[ JavaScript ] 모듈을 더욱 효율적으로 (this 사용) - 폰트 색상 바꾸기
감자도리22
2024. 5. 17. 20:20
환경 : Visual Studio Code
[ 주요 코드 ]
<script type="text/javascript">
window.onload = function(){
var colorButtons = document.querySelectorAll(".btn-color");
for(var i=0; i<colorButtons.length; i++) {
colorButtons[i].addEventListener("click", function(){
//i를 사용할 수 없다(다른 함수니까)
//대신 this가 있다(주인공)
var result = document.querySelector(".result");
result.style.color = this.textContent;
});
}
};
</script>
</head>
<body>
<div class="container w-700">
<div class="cell center">
<h1>모듈형으로 색상 변경</h1>
</div>
<div class="cell center result" style="font-size: 50px;">
Hello Javascript!
</div>
<div class="cell center">
<button class="btn positive btn-color">coral</button>
<button class="btn positive btn-color">purple</button>
<button class="btn positive btn-color">lightBlue</button>
<button class="btn positive btn-color">lightGray</button>
<button class="btn positive btn-color">orange</button>
</div>
</div>
</body>
</html>
(+) 버튼의 클래스 명(btn-color)을 동일하게 주어 이후 버튼을 추가해도, 안의 텍스트만 색상과 동일하게 지정해준다면
확장성을 높이며, 코드의 간결성도 챙길 수 있는 방법이다
(+) 버튼을 배열로 가져와, 그 안에 있는 텍스트를 읽어와, 그 텍스트를 글씨체의 색상으로 적용해주는 코드이다.
(this 사용)
[ 전체 코드 ]
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Javascript 예제</title>
<!-- 구글 폰트 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">
<!-- 내가 구현할 스타일 -->
<link rel="stylesheet" type="text/css" href="../css/commons.css">
<link rel="stylesheet" type="text/css" href="../css/test.css">
<!-- font awesome 아이콘 CDN -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
</style>
<!-- javascript를 의도적으로 head 자리에 배치해서 가장 먼저 실행되도록 구현 -->
<script type="text/javascript">
window.onload = function(){
var colorButtons = document.querySelectorAll(".btn-color");
for(var i=0; i<colorButtons.length; i++) {
colorButtons[i].addEventListener("click", function(){
//i를 사용할 수 없다(다른 함수니까)
//대신 this가 있다(주인공)
var result = document.querySelector(".result");
result.style.color = this.textContent;
});
}
};
</script>
</head>
<body>
<div class="container w-700">
<div class="cell center">
<h1>모듈형으로 색상 변경</h1>
</div>
<div class="cell center result" style="font-size: 50px;">
Hello Javascript!
</div>
<div class="cell center">
<button class="btn positive btn-color">coral</button>
<button class="btn positive btn-color">purple</button>
<button class="btn positive btn-color">lightBlue</button>
<button class="btn positive btn-color">lightGray</button>
<button class="btn positive btn-color">orange</button>
</div>
</div>
</body>
</html>
개인 공부 기록용입니다:)
728x90