Javascript [정리 중]
27209 단어 JavaScriptJavaScript
querySelector()
const tag = document.querySelector("tagname");
const id = document.querySelector("#idname");
const class = document.querySelector(".classname");
- 해당 element 중 맨 처음 것을 가져오고, 없으면 NULL 을 반환한다.
- getElementBy() 보다 효율적이다.
const container = document.querySelector("#title");
const matches = container.querySelectorAll("div.highlighted > p");
- 해당 element 를 모두 가져올 때는 querySelectorAll()을 사용한다.
- id가 test인 곳에서 div의 highlighted 클래스 내 p 태그의 노드 리스트를 반환한다.
- querySelectorAll()[0]처럼 인덱스를 사용하여 접근한다.
<div class="user-panel main">
<input name="login">
</div>
const element = document.querySelector("div.user-panel.main input[name=login]");
forEach
inputArray.forEach(function(element, index, array) {});
const body = document.querySelector("body");
const title = document.createElement("h1");
body.appendChild(title);
title.innerHTML = "Hello!";
title.style.color = "rgb(255,255,255)"; //"#FFFFFF";
- 태크 body의 내용을 변수 body에 담는다.
- 태크 h1의 내용을 title에 담는다.
- 변수 body에 변수 title의 내용을 추가하고 수정한다.
const title = document.querySelector("h2");
title.innerHTML = "HOLA!";
title.style.color = "green";
- 태크 h2의 내용을 title에 담아 수정한다.
function init() {
}
const init = () => {
}
- 둘의 차이는?
Date 객체
const now = new Data(); // 객체
const now2 = new Date("yyyy-mm-dd:hh:mm:ss+0900"); // +0900:대한민국 표준시
now.getTime(); // 1970년 1월 1일 UTC(국제표준시) 00:00으로부터 지난 시간을 millisecond로 표현
now.getDate(); // 1:1일, 2:2일..
now.getDay(); // 0:월요일, 1:화요일..
now.getMonth(); // 0:1월, 1:2월..
Math.floor()
- 소수점 아래 자리를 삭제한다.
- floor()는 Math의 정적 메서드이므로 사용자가 생성한 Math 객체의 메서드로 호출할 수 없다.
setInterval()
setInterval(func, 1000);
func 함수를 1초마다 주기적으로 호출한다.
.value 속성
document.querySelector(".className").value;
className을 갖는 select 태그 내 option의 value를 반환한다.
localStorage.getItem()
localStorage.getItem("keyName");
Local Storage에서 keyName을 갖는 Key의 Value를 반환한다.
.selected 속성
const selected = localStorage.getItem("keyName");
document.querySelector(`option[value="${selected}"]`).selected; // true or false
속성을 명시하면 true, 그렇지 않으면 false
JS 쓰는 이유
- HTML 조작과 변경
Selector
document.getElementByClassName()[0].~
- ClassName()은 Id()와 달리 모든 태그를 찾기 때문에 인덱스를 사용한다.
addEventListener
document.getElementById().addEventListener('click', function(){})
- 'click'하면 selector를 function()한다.
- event : click, keydown, scroll, mouseover
onclick=""
<button onclick=""></buttom>
- click하면 ""안의 JS 실행시킨다.
UI 만드는 방법
- 모달, Alert, Tap, Tool tip, Sub menu
- 미리 디자인 해놓고 숨긴다.
- JS로 원할 때 보여준다.
function
- 긴 코드를 한 단어로 축약 가능하다.
Tip
- JS가 HTML보다 위에 있으면 에러가 발생한다.
JQuery
- Library
- JS와 다르지 않다.
- ReactJS가 JQuery보다 HTML 조작을 더 잘 한다.
- JQuery로 만든 사이트가 많아서 안 배울 수는 없다.
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
밑에서 부터 구현
- CDN은 다른 사이트가 호스팅해주기 때문에 불안정하다.
- HTML은 위에서 부터 한 줄씩 읽기 때문에 header에서 선언하면 읽기를 멈추고 다운을 받는다.
document.getElementById('id')
document.querySelector('#id').innerHTML = "Hello";
$('#id').html("Hello");
$('#id').css('color','pink');
$('#id').attr('src','');
- querySelector()는 한 개밖에 찾지 못하고 맨 처음 인덱스를 가져온다.
$('.class').on('click', function(){})
$('.class').click(function(){})
- addEventListener('click', funciton(){})
- 이름이 같은 selector를 인덱싱 할 필요없이 한꺼번에 수정할 수 있다.
- toggle()[hide()/show], slideToggle(), fadeToggle()
<input id=test>
$('#test').val()
- input value
모달
- 팝업은 창을 하나 더 띄었으나 모달은 실제로 더 띄우지 않고 느낌만 준다.
=
1 == '1' // true
1 === '1' // false
preventDefault()
$('.form').on('submit', function(e) {
e.preventDefault();
}
- form의 submit, 전송을 막는다.
var
- undefined (Not error)
- 생존범위 function
- for문 범위 이상으로 넓어진다.
let
- 재선언 불가
- uninitialized (Error)
- 생존범위 {}
- for문 범위 내에서 참조 가능하다.
const
- 재할당 불가
typeof()
- number
- string
- string이 적어도 하나 있으면 number와 연산해도 string 연산을 한다.
Array, Object
let arr = ['BMW', 520]; // 여러가지 자료형 저장
console.log(arr[0]);
let obj = { brand : "BMW", model : 520 }; // key : value
console.log(obj.brand);
console.log(obj.['brand']);
- 인덱스 범위를 넘어가면 undefined
- arr.push()
form, input, change event
- input event : input값이 바뀔 때
- change event : input값이 바뀌고 focus를 잃을 때
$('#option1').on('change', function () {
if ($('#option1').val() == '셔츠')
$('.size-select').show();
});
Grave accent
- ` (역따옴표)
let temp = `<option>${size[i]}</option>`;
let temp1 = "<option>S</option><option>M</option><option>L</option>"
let temp2 = `<option>S</option>
<option>M</option>
<option>L</option>`
Hoisting
- 변수, 함수 선언을 항상 위로 올려서 해석한다.
test
/abc/.test('abcdef')
/[A-z]/.test('a')
/\S+@\S+\.\S+/.test('email') // 특수문자 포함 모든 문자 1개, + 붙으면 여러 문자
- true
Event Bubbling
- 이벤트가 상위 요소로 퍼지는 현상이다.
- 자식 태그를 누르면 그 위의 모든 부모 태그를 누른 것과 같다.
- eventListener를 만들 때 주의한다.
$('.black-bg').click(function (event) {
// event.target; // 지금 실제 클릭한 요소
// event.currentTarget; // 지금 이벤트리스너가 있는 곳, $(this);
//if (event.target == event.currentTarget)
if (event.target == this)
$('.black-bg').hide();
})
Data Binding
- 데이터를 JS로 HTML에 넣는 작업
Array.forEach(function(element){});
let size = [85, 90, 95, 100, 105, 110, 115];
size.forEach(function(e){
let temp = `<option>${e}</option>`;
$('#option2').append(temp);
});
- 배열 개수만큼 반복한다.
- 콜백함수의 매개변수는 배열의 각 원소이다.
웹 개발 방식
- 서버가 HTML을 완성해서 사용자에게 보내는 방식
- 서버가 빈 HTML과 데이터를 보내고, 브라우저에서 JS를 이용해서 채우는 방식
- AJAX를 통해 서버에서 데이터를 가져온다.
sort
let a = [20, 3, 1];
a.sort(); // 1, 20, 30
a.sort(function(a, b) { // a, b는 배열의 원소
return a - b; // 1, 3, 20
// +를 반환하면 a를 오른쪽, b를 왼쪽으로 보낸다
})
- 오름차순 : a - b;
- 내림차순 : b - a;
- 기존 배열을 변형시킨다.
a.sort(function (a, b) {
let result = a.title > b.title;
if (result == true) {
return 1;
} else {
return -1;
}
})
- 문자 비교는 boolean과 양수, 음수를 활용한다.
filter
let a = [7, 3, 5];
let a2 = a.filter(function(e) {
return e < 6; // 3, 5
}
- 기존 배열을 변형시키지 않기 때문에 새로운 변수를 만들어야 한다.
map
let a = [7, 3, 5];
let a2 = a.map(function(e) {
return e * 2; // 14, 6, 10
}
spread operator
let b = [3, 9, 1, 7, 5];
let c = [...b]; // 3, 9, 1, 7, 5
DOM
- Document Object Model
- JS가 HTML을 조작하기 위해 해석할 수 있는 문법으로 정리한 것을 의미한다.
- Object 자료형을 사용한다.
- 브라우저는 JS로 HTML을 조작하기 위해 HTML을 읽을 때 DOM을 만든다.
<script> //ERROR : p태그에 대한 DOM이 생성되기 전
document.getElementById('test').innerHTML = '안녕'
</script>
<p id="test">Hello</p>
- JS는 DOM이 생성되어 있어야 HTML을 변경할 수 있다.
<script>
$(document).ready(function(){
document.getElementById('test').innerHTML = '안녕'
});
</script>
<p id="test">Hello</p>
document.addEventListener('DOMContentLoaded', function() {
//DOM생성이 완료되었을 때 실행할 코드
});
AJAX
- 서버에 데이터를 요청(GET, POST)해서 새로고침 없이 받아온다.
- 프론트엔드 개발자
- 상품 더보기, 댓글 더보기 등
<script>
$('.btn-primary').click(function () {
$.ajax({
url: "",
type: "GET",
}).done(function (data) {
$('#id').html(data);
}).fail(function(){
}).always(function(){
});
});
</script>
GET
- URL을 입력해서 요청, 읽기
POST
- URL 변경 없이 정보를 숨겨 전달 또는 요청, 쓰기
JSON
{"brand" : "Hyundai", "model" : "Kona", "price" : 30000, "img" : "https://codingapple1.github.io/kona.jpg"}
- 데이터를 주고 받을 때 텍스트 형식이 아니면 중간에 깨질 수 있기 때문에 object형의 key값에 따옴표를 붙인다.
let obj = JSON.parse(json);
let json = JSON.stringfy(obj);
- object처럼 .을 찍어 원하는 자료를 가져올 수 없기 때문에 변환 과정이 필요하다.
- jQuery의 ajax함수를 사용하면 JSON을 자동으로 object로 변환해준다.
Hammer.js
<script>
let img1 = document.querySelectorAll('.slide-box>img')[0];
let manager = new Hammer.Manager(img1);
manager.add(new Hammer.Pan({
threshold: 0
}));
// pan event
manager.on('pan', function (event) {
if (event.deltaX < 0) {
$('.slide-container').css('transform', `translateX(${event.deltaX}px)`);
if (event.isFinal) { // 마우스를 놓으면
$('.slide-container').addClass('transforming');
$('.slide-container').css('transform', `translateX(-100vw)`);
setTimeout(function () {
$('.slide-container').removeClass('transforming');
}, 500);
}
}
});
</script>
- 터치 기능이 있는 슬라이드
Author And Source
이 문제에 관하여(Javascript [정리 중]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@solda/Javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)