
js로 원하는 내용기재"<div class="alert-box" id="alert">알림창임</div>
<button onclick="document.getElementById('alert').style.display='block'">버튼</button>결과물 
= 긴 코드 짧은 단어로 축약
<body>
<div class="alert-box" id="alert">알림창임
<button onclick="document.getElementById('alert').style.display='none'">닫기</button>
</div>
<button onclick="알림창열기">버튼</button>
<script>
function 알림창열기() {
document.getElementById('alert').style.display='block'
}
</script>
</body>
코드 짤 때 자주 겪는 에러 메세지
1. 셀렉터 오타 주의
- 개발자도구 console 탭에서 error 중 of null 대부분 셀렉터 오타이다.
2. 그냥 기본 문법 오타
비슷한 함수가 많으면 그냥 가변적인 부분에 파리미터(인자)를 뚫어놓는다.
인자자리에 원하는 것을 넣음으로써 함수하나로 다양한 코드 실행가능해진다.
,로 구분'문자는 따옴표 안에'
숫자는 그냥써도 된다.
<div class="alert-box" id="alert">알림창임
<button onclick="알림창열기('block');">닫기</button>
</div>
<button onclick="알림창열기('none');">버튼</button>
<script>
function 알림창열기(구멍) {
document.getElementById('alert').style.display=구멍;
}
</script>
복잡하면 한글부터 짜고 코드로 옮겨보기~
element.innerText;
이 속성은 element 안의 text 값들만을 가져옵니다.
element.innerHTML;
innerText와는 달리 innerHTML은 element 안의 HTML이나 XML을 가져옵니다. HTML에 속성이 들어가있었으면 함께 적용 된다.
getElementsByClassName('클래스네임')[인덱싱]내가 원하는 요소를 찾고, addEventListener('event명', function(){
실행할 함수;
})
마우스클릭 click, 마우스 갖다대기 mouseover 키입력keydown, 스크롤scroll 등 모두가 이벤트다.
CSS는 하단에 써있을수록 우선 적용
class 부착식으로 개발하면
원하는 요소에 클래스명 추가하는 방법
요소 찾아오기.classList.add('추가할클래스명');
document.getElementsByClassName('navbar-toggler')
[0].addEventListener('click', function(){
document.getElementsByClassName('list-group') [0].classList.toggle('show');
})
document.querySelector('.navbar-toggler')전체를 찾고싶으면 해당하는 모든 요소를 다 찾아서 배열로 가져온다.
인덱싱을 하면 선택가능하다.
document.querySelectorAll('.navbar-toggler')[0]toggle: show가 있으면 제거, 없으면 추가하라는 듯
HTML 조작문법을 쉽게 바꿔주는 라이브러리들:jQuery, React, Vue 등
$ querySelector
addEventListener on
jQuery는 추가적으로 설치해서 사용할
// document.querySelector('#test-btn').addEventListener()
$('#test-btn').on('click', function(){
$('.hello').hide()
})
간단한 UI용 애니메이션 편리
slideup()
fadeup()
hide() = display none의 효과와 같음
html() = innerHTML 효과와 같다.
on() = addEventListener()
주의사항
position: fixed와 z-index: 5 를 주면 맨 앞에 보인다. UI에 애니메이션 추가하려면
visibility:hidden애니메이션을 만들 때display:none을 대체하는 것
- 자리를 차지하면서 투명도가 0이다.
visibility:visible;는display: block과 비슷하다
form
서버로 유저정보 전송하려고 쓰는 것이다.
<form action = "url">
button
전송하는 button에 type은 submit을 넣어주고
나머지 button에 type="button"을 줘야 오류나지 않는다.
<button type="submit" class="btn btn-primary">전송</button>
<button type="button" class="btn btn-danger" id="close">닫기</button>
전송버튼 누를 때 첫째 input에 입력된게 없으면 alert 띄우기
조건문 쓰는 법
if(조건){조건이 참일 때 실행할 코드}
else{위 조건이 참이 아닐 때 실행할 코드}
else if문법: 조건식을 연달아 쓰고 싶으면 사용, 여러개를 해도 상관없다.
앞의 조건식이 참이면 뒤에 있는 조건식은 읽지않는다. if else if
if if 면 앞의 조건식과 상관없이 둘째 if문도 실행된다.
비교연산자
| 연산자 | 내용 |
|---|---|
== | 같다. |
< | 크다 |
> | 작다 |
<= | 크거나 같다. |
>= | 작거나 같다. |
document.getElementById().value event.preventDefault()e.preventDefault() .length글자의 개수 세기 else if (document.getElementById('password').value.length < 6) {
alert("비밀번호가 6자 미만입니다. 더 길게 입력하세요.");
event.preventDefault();
}
<script> 안의 코드는 새로고침할 때마다 한번씩 실행된다. 또 다른 연산자
!===== : 타입까지 같아야 같다고 판정한다. == 조건 2개 이상을 동시에 비교하고 싶으면
&& and 둘다 참이면 전체를 참으로 해준다. || or 둘 중 적어도 하나가 참이면 전체를 참으로 판단. badge 클릭횟수가 홀수면 내부 글자를 Light로 변경
badge 클릭횟수가 짝수면 내부 글자 Dark로 변경
변수문법
var 변수이름 = 변수에 넣을 값;=는 대입할당일뿐이다. 나눈 후 나머지 구해주는 나머지 연산자
%
홀수의 경우%2 == 1
짝수의 경우%2 == 0
진짜 다크모드는 class 미리 만들어 놓으면 된다.
Bootstrap UI들은 스타일을 바꾸려면 class명을 수정해야 한다.
변수의 선언, 할당, 범위
* `var 이름;` 변수의 선언
* 변수를 선언만 했을 때는 undefined가 출력된다.
* `var **이름 = 'kim';**` 변수의 할당
* 재할당은 자유이다.
function 함수() {
var 이름 = 'kim';
}let 장점: 만든 변수 또 만드는 것을 방지해준다. const 장점: 변하면 안되는 값을 보관하기 좋다.
| var | let | const |
|---|---|---|
| 재선언O | 재선언X | 재선언X |
| 재할당O | 재할당O | 재할당X |
| function 안에도 들어갈 수 있음 | {중괄호에서만 쓸 수 있음} | {중괄호에서만 쓸 수 있음} |