새 요소 만들기
<div id="content">
<h1>DOM요소</h1>
</div>
<script>
let p = document.createElement("p")
👉p 태그가 만들어졌다.
</script>
텍스트 노드 만들기
let textnode= document.createTextNode("내용");
👉//"내용"이라는 textnode를 작성했다.
부모요소의 자식요소로 추가
이미 자식요소가 있을 경우 마지막 자식요소로 추가
p.appendChild(textnode);
👉//p의 자식요소로 textnode를 추가했다. <p>내용</p>
const content = document.getElementById("content");
content.appendChild(p);
👉//content의 자식요소로 p를 추가했다.
부모요소의 자식요소 앞에 추가
content.insertBefore(p, content.firstElementChild)
👉//content의 첫번째 자식요소의 앞에 p를 추가했다.
content.insertAdjacentElement("afterbegin",p)
👉//content가 시작한 후에 p를 추가했다.
노드 맨 끝에 삽입
const div = document.createElement('div');
div.append('hi');
👉//<div>hi</div>
노드 맨 앞에 삽입
div.append('hi');
👉//<div>hi</div>
노드 이전에 삽입
노드 이후에 삽입
let box2 = document.querySelector("#box2");
function removeDiv(){
box2.remove();
}
let ul =document.querySelector("ul");
let li =document.querySelector("li:nth-child(1)");
👉//1번째 자식 li지정
ul.removeChild(li);
👉//Ul의 자식요소 li를 삭제
spans.forEach(i=>{
i.addEventListener("click",function(){
this.parentElement.remove();
})👉해당되는 spans가 클릭될 때 부모요소 삭제
});
true = 자식요소까지 전부 복제
false = 자식요소를 제외하여 비어 있는 요소로 복제
<div id="box1">
<h2>안녕하세요</h2>
</div>
<script>
let div1= document.querySelector("#box1");
let div2= div1.cloneNode(true);
div1.after(div2)
</script>
자식요소 선택
자식요소 중 마지막 요소 선택
자식요소 중 첫번째 요소 선택
부모요소 선택
시작하기 전에
<button onclick="name()"></button>
html에서 요소의 속성으로 event를 설정한다.
let name=documnet.querySelector("button");
name.onclick = function(){
};
script에서 대상을 부르고 event를 설정한다.
해당하는요소.addEventListener("이벤트명",함수)
let name=documnet.querySelector("button");
name.addEventListener("click",function(e){
};
❗ 위의 function에서 e는 event 객체를 뜻하는 것으로
e.pageX 좌표값과 e.pageY 좌표값으로 마우스 위치값을 가지고 있다.
window.addEventListener('scroll',function(e){
//window를 scroll 했을때 function을 실행한다.
let scrollT = document.documentElement.scrollTop;
//현재 위치의 스크롤 값으로, 위와 아래의 let scrollT는 똑같이 작동한다.
let scrollT = window.scrollY;
document.querySelector("p").innerHTML = scrollT;
//위 함수로 얻은 값을 p에 출력했다.
if(scrollT>500){
document.querySelector("body").style.background ="red";
//스크롤 값이 500이 넘으면 body 색상을 red로 변경
}else {
document.body.style.background = "beige";
//스크롤 값이 500을 넘지 않으면 body 색상을 beige로 한다.
//body를 지정할 때에는 .body로 지정해도, querySelector를 이용해도 된다.
}
})
스크롤 값의 변경에 따라 background 컬러를 변경시켰다.
let p = document.querySelector("p");
p.addEventListener('click',function(){
//함수 p를 click했을 때 function을 실행한다.
window.scrollTo({top:500, behavior:"smooth"});
//window를 scroll높이 top:500으로 smooth하게 이동한다.
})
요소를 클릭했을때 스크롤 값을 변경시키는 함수를 작성할 수 있다.
window.innerHeight
name = 서버에 값이 저장될 장소
value = 서버에 저장되는 값
form 안의 요소들은 js에서document.forms.폼네임.요소네임
으로도 선택할 수 있다.
❗ form안의 요소를 만들 때 클릭할 버튼은 form 밖에 작성해야 새로고침이 되지 않는다.
check되면 checked 속성의 값이 true가 된다.
check되지 않으면 checked 속성의 값이 false가 된다.
<select name="num" id="num">
<option value="가">10</option>
<option value="나">20</option>
<option value="다">30</option>
<option value="라">40</option>
</select>
<script>
document.querySelector("#num").addEventListener("change",function(){
console.log(this.value);
})
</script>
input에 커서가 가 있는 것을 의미한다.
💡 일정 글자 수를 입력했을 시 다음 입력란으로 넘길때 주로 사용한다.
<body>
<form action="join.php" method="get" onsubmit="return formCheck();">
<p>ID <input type="text" id="userId" name="userId"/></p>
<p>PW <input type="text" id="userPw" name="userPw"/></p>
<p><button type="submit">전송</button></p>
</form>
<script>
document.querySelector("form").addEventListener("submit",function(e){
e.preventDefault()
});
function formCheck(){
console.log("폼을 확인합니다.");
}
</script>
</body>
form에 onsubmit으로 "return 함수()"를 입력하면 함수가 정상적으로 완료되면 action이 실행된다. 함수가 제대로 완료되지 않고 return false값을 받으면 action이 실행되지 않는다.
❗ false값을 받았는데도 불구하고 action이 실행된다면
e.preventDefault() 값을 줘서 event 값을 default로 전환시킨다.