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 안에도 들어갈 수 있음 | {중괄호에서만 쓸 수 있음} | {중괄호에서만 쓸 수 있음} |