html 변경
document.getElementById(’hello’).innerHTML = ‘안녕’;
(문서) (~의) (id hello:html 요소를 가져와라) (HTML 안) <= ‘안녕
document.getElementById(’ ’).?? = ‘??’; 형식으로 사용
getElementById 는 셀렉터라고 함!
.innerHTML / .style / .color 등 이렇게 점을 찍고 괄호가 없는건 메소드 이다.
html 요소의 어떤 속성을 변경할지 결정하기 위해 사용.
자바스크립트의 역할
- html의 조작과 변경을 담당하는 언어
- 예시로 유저의 이벤트 등을 처리 가능
<script> 안에 작성한 코드들은 브라우저 새로고침시 1회 실행된다.
‘ command + / ‘ → 주석처리 커맨드
UI 만드는 step
- HTML/CSS 로 미리 디자인 만든다.
- 필요할 때 보여주도록 자바스크립트로 이벤트 처리
버튼 이벤트 onclick 속성 사용
<button
onclick="document.getElementById('alert-box').style.display = 'block';"
>
버튼
</button>
버튼 눌렀을 때 onclick 안의 자바스크립트를 실행
function
function 작명() {
...
}
다음과 같은 형식으로 작성
함수 이름 형식
- 소문자로 시작
- camelCase 로 작성
function openAlert(){
document.getElementById('alert-box').style.display = 'block';
}
긴 코드 재사용 잦을 경우에 편리 (재사용성)
특정 기능을 다음에도 편리하게 쓰기위해 모듈화 해놓는 문법
잦은 간단한 에러 사항
- 자바스크립트<script> 를 html 위쪽에 작성을 하게 되면 오류날 가능성이 있음.
- → 코드를 위에서부터 읽어 내려오기 때문에 html 먼저 읽어놓고 js 로 조작하는 형식으로 작성해주자 (디버깅)
- 셀렉터 오타 주의
- → 크롬의 개발자 도구에서 콘솔창 오류 잘 찾아보기
- 기본 문법 오타 주의
매개변수(parameter), 인자(argument) 사용하기
function controlAlert(state) {
document.getElementById("alert-box").style.display = state;
}
위와 같이 state 매개변수를 사용하여 인자를 받아서 코드를 더 간결하게 작성 가능
함수 사용하는 곳에서 인자로 받아와 사용
비슷한 함수가 많으면 가변적인 부분들을 변수 사용하여 축소
class 이름으로 요소 찾기
<button class='title'>...</button>
...
...
document.getElementsByClassName('title')[0].innerHTML = 'hi!';
class명은 중복 가능하기 때문에 위와 같이 인덱싱을 통해 지정해줄 수 있다.
event란?
- 클릭, 키입력, 스크롤, 드래그 등 여러가지 사용자가 하는 행위들
document.getElementById("close").addEventListener("click", function () {
document.getElementById("alert").style.display = "none";
});
이벤트 리스너를 사용하여 사용자의 event들 받아올 수 있음
위의 코드는 click event를 받아온 것
function(){}
→callback 함수
순차적으로 실행하고 싶을 때 콜백함수를 사용
class name을 여러 개 지정해서 class 부착식으로 개발하면
- 애니메이션 추가 쉬움
- 나중에 재사용 편리
Bootstrap 이용하여 UI 쉽게 만들기
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<h1>Hello, world!</h1>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
</body>
</html>
Bootstrap 초기 코드
위에 html 코드에 bootstrap에서 필요한 UI들 갖고와서 사용하면 됨
document
.getElementsByClassName("navbar-toggler")[0]
.addEventListener("click", function () {
document
.getElementsByClassName("list-group")[0]
.classList.toggle("show");
});
classList 사용하여 해당 태그에 클래스명 추가해주기
toggle 함수 이용하면 뗏다 붙였다 할 수 있음
querySelector
getElementById(), getElementByClassName() 대신에 querySelector 사용가능
css에서 사용하는 . 이나 # 을 통해 선택할 수 있음
document.querySelector('.test1').innerHTML = '안녕';
document.querySelector('#test2').innerHTML = '안녕';
querySeletor() 안에서는 css 셀렉트 문법을 사용할 수 있다.
다만 querySeletor() 는 맨 위의 한 개의 요소만 선택한다.
className이 여러 개일 경우 querySelectorAll() 을 사용하여 모든 요소들을 배열에 넣어줌
따라서 querySelectorAll()[0] 과 같이 사용할 수 있다.
document.querySelectorAll('.test1')[1].innerHTML = '안녕';
JQuery
자바스크립트는 코드가 매우 길고 더럽다.
따라서 JQuery 라이브러리를 이용하여 코드를 더욱 짧고 간결하게 사용할 수 있다.
JQuery는 단지 자바스크립트의 코드 양을 줄여주기 위한 라이브러리
JQuery 사용하여 html 변경하기
<p class='hello'>안녕<p>
<script>
$('.hello).html('hello');
</script>
다음과 같이 $를 이용하여 매우 짧아진 형태를 볼 수 있다.
$ 는 querySelector 와 동일하게 사용하면 됨
JQuery 사용하여 스타일 변경하기
<p class="hello">안녕</p>
<script>
$('.hello').css('color', 'red');
</script>
- html 셀렉터로 찾으면 html 함수들만 뒤에 붙여야하고, JQuery 셀렉터로 찾으면 JQuery 함수들만 써야한다.
JQuery 사용하여 class 탈부착하기
<p class="hello">안녕</p>
<script>
$('.hello').addClass('클래스명');
$('.hello').removeClass('클래스명');
$('.hello').toggleClass('클래스명');
</script>
html 여러 개 바꾸기
<p class="hello">안녕</p>
<p class="hello">안녕</p>
<p class="hello">안녕</p>
<script>
document.querySelectorAll('.hello')[0].innerHTML = 'hello';
document.querySelectorAll('.hello')[1].innerHTML = 'hello';
document.querySelectorAll('.hello')[2].innerHTML = 'hello';
</script>
자바스크립트로 여러개의 html을 바꾸려면 위와 같이 작성해주어야함
하지만 JQuery 는 $() 셀렉터를 통해 querySelectorAll 처럼 여러 개 다 찾아준다
<p class="hello">안녕</p>
<p class="hello">안녕</p>
<p class="hello">안녕</p>
<script>
$('.hello').html('hello');
</script>
동일한 className 가진 여러개의 태그를 한번에 바꿀 때도 용이하다
JQuery 에서의 이벤트 리스너
<p class="hello">안녕</p>
<button class="test-btn">버튼</button>
<script>
$('.test-btn').on('click', function(){
$('.hello').html('hello');
});
</script>
- addEventListner 대신에 on 사용해주면 됨 (코드의 양 줄어듬)
UI 애니메이션도 간단하게 사용할 수 있음
p class="hello">안녕</p>
<button class="test-btn">버튼</button>
<script>
$('.test-btn').on('click', function(){
$('.hello').fadeOut();
});
</script>
.hide(), .fadeOut(), .slideUp() 등 여러가지 애니메이션 제공해줌
'FrontEnd > Javascript' 카테고리의 다른 글
this 키워드 (0) | 2023.07.06 |
---|---|
Javascript 공부 #6 (0) | 2023.01.20 |
Javascript 공부 #5 (1) | 2023.01.16 |
Javascript 공부 #4 (0) | 2023.01.15 |
Javascript 공부 #2 (0) | 2023.01.12 |