상세 컨텐츠

본문 제목

js html 접근, 이벤트

웹/js

by nownow 2022. 6. 25. 04:33

본문

js에서 html에 접근, 수정 가능.

콘솔에서 documnet 를 치면 html 내용이 나옴

document.title = "string" 과 같은 형식으로 수정 가능.

 

document.getElementById("string") 과 같이 html에서 지정한 id에 해당하는 부분을  get할 수 있음

 

const grab = document.getElementById("hi");
console.log(grab);

과 같이 하면 hi 라는 Id에 해당하는 부분

   <h1 id="hi">hello world</h1>

을 긁어옴. 

const grab = document.getElementById("hi");
grab.innerText = "Hi";

이렇게 해서 html에서 해당 id 내부의 내용을 바꿀 수 있음.

 

 

document.querySelector(".className h1")

위 함수를 사용하면 해당 클래스 내부의 h1을 끌어내는게 가능(css형식으로)

querySelectorAll 로 array 형태로 모두 갖고오기 가능 

 

const grab = document.querySelector('#hi')
console.dir(grab);
grab.style.color="blue"

console.dir에서 grab에 해당하는 부분의 정보를 확인

grab 속의 style object의 color을 바꿔서 html 수정하여 글자의 색을 변경 가능

 

 

 

 

이벤트

 

 

html element를 사용한 이벤트

const grab = document.querySelector('#hi')
function funcname() {
    alert("clicked");
}
grab.addEventListener("click",funcname);

이벤트가 발생했을때 일어날 일을 함수 속에 넣어둔뒤에

 

element.addEveneListner("이벤트종류",함수명) 

또는

element.on이벤트명 = 함수명

형태로 사용

 

위쪽의 형태로 사용할때 .removeEventListner 사용해서 eventlistner를 제거 가능

 

 

 

window 사용한 이벤트

window.addEventlistner("window이벤트 (resize)",함수명)

const grab = document.querySelector('#hi')
function funcname() {
    console.log("Hi");
}
function func2() {
    document.body.style.backgroundColor="white"
    console.log("resize");
}
func2()
grab.addEventListener("mouseenter",funcname);
window.addEventListener("resize",func2);
const grab = document.querySelector('#hi')
function changeColor() {
    const color = grab.style.color;
    let status;
    if(color==='red')
    {
        status="black";
    }
    else
    {
        status="red";
    }
    grab.style.color = status;
}
grab.addEventListener("mouseenter",changeColor);

 

 

하지만 이렇게 하면 자바스크립트에서 CSS를 조정하는 상황이 되어버림.

각자의 역할에 맞는 부분을 수행 하도록 수정

 

 

js 코드

const grab = document.querySelector('h1')
function changeColor() {
    const check='active'
    if(grab.className===check)
    {
        grab.className="";
    }
    else
    {
        grab.className= check;
    }
       
}

css코드

.active
{
    color:white;
}

css에서 특정 class에 대한 스타일을 조정하고 js에서 이벤트를 감지해서 class를 지정해준다.

 

하지만 이렇게 한다면 해당 h1에 원래 className이 있었다면

그것은 지워져버리고 active가 생겼다가 사라지는 것만 반복됨.

 

이것을 방지하기 위해서  classList 를 사용할 것.

 

const grab = document.querySelector('h1')
function changeColor() {
    const check='active'
    if(grab.classList.contains(check))
    {
        grab.classList.remove(check);
    }
    else
    {
        grab.classList.add(check);
    }
       
}
grab.addEventListener("click",changeColor);
console.log(grab)

 

이 기능을 좀 더 편하게 만들어주는 함수인 toggle을 활용할 것이다.

const grab = document.querySelector('h1')
function changeColor() {
    const check='active'
    grab.classList.toggle(check);
       
}
grab.addEventListener("click",changeColor);
console.log(grab)

 

toggle로 해당 class가 없다면 추가, 있다면 제거.

' > js' 카테고리의 다른 글

js 내용 저장하기 local storage  (0) 2022.06.27
js input 활용  (0) 2022.06.26
js 조건  (0) 2022.06.24
js array, objects, function  (0) 2022.06.23
html과 css, js 연결하기  (0) 2022.06.22

관련글 더보기