const age = parseInt(prompt("몇살이니?")); //숫자 또는 NaN으로 반환됨
if(isNaN(age)){ //true면 실행하고 아니면 else구문으로 넘어감
console.log("숫자를 입력해");
} else {
console.log("나이를 써서 고맙다");
}
HTML in Javascript
1. document 라는 객체는 JS에서 HTML파일을 불러올 수 있도록 도와준다 2. document의 함수 중에는 getElementById 라는 함수가 있는데,
이 함수가 HTML에서 id를 통해 element를 찾아준다 ex)document.getElementedById("idname")
const title = document.getElementById("title");
title.innerText = "Got you!";
console.log(title.className);
- getElementsByClassName() : 많은 element를 가져올때 씀(array를 반환) - getElementsByTagName() : name을 할당할 수 있음(array를 반환) - querySelector : element를 CSS selector방식으로 검색할 수 있음 (ex. h1:first-child) 단 하나의 element를 return해줌
한개만 아니라 동일한 하위요소를 가져오고 싶다면 querySelectorAll
⇒ hello란 class 내부에 있는 h1을 가지고 올 수 있다(id도 가능함) - 첫번째 element만 가져옴 - 조건에 맞는 세개 다 가져오고 싶으면 querySelectorAll ⇒ 세개의 h1이 들어있는 array를 가져다 줌 - querySelector("#hello); 와 getElementById("hello"); 는 같은 일을 하는 것임 하지만 후자는 하위요소 가져오는 것을 못하므로 전자만 쓸거다
const title = document.querySelector("#hello form");
const title = document.getElementById("#hello");
* javascript가 document로 html을 불러올 수 있고 수정 추가도 가능하다*
1.불러오는 함수 querySelector/ querySelectorAll 이 유용하다. 2.사용자의 event를 listen해서 반응 addEventListener("event", function); **이때 function에 실행 하는 () 기호는 쓰지 않는다. 우리가 원하는 건 이벤트 발생 시 함수가 실행 되는 것이기 때문에 ()를 임의로 쓰면 이벤트 발생 전에 실행됨. 3.바꿀 수 있는 property 중 style도 있다. title.style.color = "blue"; 혹은 function changeColor() {title.style.color = "blue";} title.addEventListener("click", changeColor); 처럼 쓸 수 있다.
const title = document.querySelector("div h1");
function handleTitleClick(){
const ranColor = ["blue","red","green","yellow","black"];
let num = Math.floor(Math.random() * ranColor.length);
title.style.color = ranColor[num];
}
title.addEventListener("click",handleTitleClick);
위에 두 코드는 동일하나 addEventListener를 선호하는 이유는 removeEventListener을 통해서 event listener을 제거할수있기 때문이다.
document에서 body,head,title 은 중요해서 언제든 ex) document.body 로 가져올수있지만 div나 h1 등 element 들은 querySelector getElementById등으로 찾아야한다. ex) document.querySelector(“h1”);
//window는 기본제공
function handleWindowResize(){
document.body.style.backgroundColor = “tomato”;
}
function handleWindowCopy(){
alert(“copier”);
}
window.addEventListener(“resize”, handleWindowResize);
window.addEventListener(“copy”, handleWindowCopy);
1. element 찾기 2. event를 listen 3. 그 event에 반응하기
classList 우리가 class들의 목록으로 작업할수 있게끔 허용해준다. className은 이전calss를 상관하지않고 모든걸 교체해 버린다.
classList를 이용하는건 js에서 건드리는건 HTML element가 가지고있는 또하나의 요소 사용하는 것이다. = element의 class내용물을 조작하는 것을 허용한다는 뜻
contains은 우리가 명시한 class가 HTML element의 class에 포함되어 있는지 말해준다
toggle은 토큰이 존재하면 토큰제거 토큰존재 하지않으면 토큰 추가
ex) toggle은 h1의 classList에 clicked class가 이미있는지 확인하여 만약있다면 toggle 이 clicked를 제거해준다 만약 class name이 존재하지 않는다면 toggle은 classname 추가
1. class 키워드와 클래스명 class는 클래스를 선언하는 문구이고 그 뒤에 바로 클래스 명이 나옵니다. 클래스명도 마치 변수명처럼 내가 표현하고자 하는 데이터를 잘 나타낼 수 있는 이름이 좋겠죠? 위의 예에서 Notebook 대신 Person 같은 이름을 쓴다면 다른 사람들이 코드를 봤을 때 이상하다고 생각할 겁니다.
2. 생성자 (constructor) 중괄호 안에는 생성자라는 것을 적어줍니다. 혹시 생성자가 함수와 많이 비슷하다는 것 눈치채셨나요? 이 생성자는 말 그대로 나중에 객체가 '생성'이 될 때 자바스크립트 내부에서 호출이 되는 함수라고 생각해주시면 됩니다. 생성자를 좀 더 살펴보면 3개의 매개변수를 정의했고 각각의 이름은 name, price, company 네요.
3. this와 속성(property) 생성자의 바디를 보면 this 라는 키워드가 등장하네요. 이 this는 클래스를 사용해 만들어질 객체 자기 자신을 의미하고 this 뒤에 붙는 name, price, company는 객체의 속성입니다. 생성자의 바디에서는 함수 호출시 전달할 매개변수 name, price, compay를 객체의 속성 name, price, company에 각각 할당하고 있는 것입니다.
객체 만들기
const 변수명 = new 클래스명(생성자에서 정의한 매개변수들...)
const notebook1 = new Notebook('MacBook', 2000000, 'Apple')
클래스를 활용해 객체를 만들 때는 new 라는 키워드를 먼저 써주고
클래스명을 마치 함수처럼 호출하면서 매개변수값을 전달해주면 됩니다.
그러면 해당 클래스의 생성자가 호출되면서 객체가 생성되고 객체의 속성들에 매개변수값들이 할당되겠죠.
만들어진 객체는 변수에 할당해줍니다. 기본 타입의 데이터들을 변수에 할당하면 변수를 사용하여
해당 데이터에 접근할 수 있었습니다. 객체도 마찬가지입니다.
객체도 변수에 할당하고 나면 해당 변수를 활용해 객체에 접근할 수 있습니다.
객체의 속성 하나하나에 접근해 데이터를 갖고와야 할 때도 있겠죠? 이 때는 this.속성명 을 사용합니다.
[new 라는 의미는 영역(block)을 지정하여 함수 내부의 정의된 내용을 실행하여 주는 의미]
const min = function(배열){ let output = 배열[0] for (let value of 배열){ if (output > value){ output = value } } return output } console.log(min([52,273,32,103,275,24,57]))