채택완료

제이쿼리를 자바스크립트로 바꾸고있습니다..!

2021-10-01 (금) 11:40:57 1,033
|

답변 2개

채택된 답변
+20 포인트
2021-10-10 (일) 20:48:51

여러가지 방법이 있기 때문에, 편한 방법으로 제작하시면 될 것 같습니다.

참고로 살펴보시기 바랍니다.

* HTML

Copy
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery -> vanilla</title>
    <link rel="stylesheet" href="./style.css">
    <script src="./script.js"></script>
</head>
<body>
    <div>
        <button class="more_start"></button>
        <button class="more_start_btn"></button>
        <button class="more_start_place"></button>
    </div>
</body>
</html>


* CSS

Copy
div {
    width: 300px;
    margin: 0 auto;
    display: flex;
    flex-flow: column wrap;
    gap: 20px;
}

button {
    padding: 1rem;
    font-size: 1.5rem;
    font-weight: bold;
    color: gray;
    background-color: white;
    border-radius: .5rem;
    border: 1px solid gray;
    box-shadow: 1px 1px 5px 5px rgb(226, 226, 226);
}

button:first-child {
    width: 60%;
    margin-bottom: 5rem;
}

button.on {
    background-color: yellow;
    color: chocolate;
}

button.off {
    background-color: black;
}

 


* JS

Copy
// 버튼 텍스트 변경용 함수
const addClassName = (elem) => {
    elem.innerText = elem.classList.toString();
}

 

// 클래스가 있는지 확인용 함수
const hasClass = (elem, className) => {
    return elem.classList.value.indexOf(className) !== -1 ? true : false;
}

 

// 토글 처리용 함수

const toggleClass = (elem, addClass, removeClass) => {
    elem.classList.remove(removeClass);
    elem.classList.add(addClass);
}

 

window.onload = () => {
    let btns = document.querySelectorAll('button')
    for(let i = 0; i < btns.length; i++) {
        addClassName(btns[i]);
    }

 

    let more_start = document.querySelector('button.more_start'),
        start_btn = document.querySelector('button.more_start_btn'),
        start_place = document.querySelector('button.more_start_place');

 

    more_start.addEventListener('click', e => {
        e.preventDefault();

        if( hasClass(start_btn, 'on') ) {
            toggleClass(start_place, 'on', 'off');
            toggleClass(start_btn, 'off', 'on');
        } else {
            toggleClass(start_place, 'off', 'on');
            toggleClass(start_btn, 'on', 'off');
        }

        addClassName(start_place);
        addClassName(start_btn);
    })
}

 

onclick function 안에 const를 남발하지 않도록 하세요. const는 한번 정의되면 재정의될 수 없는 상수이기 때문에, 클릭할때마다 정의를 해야하는 현재 상황과 맞지 않습니다.

답변을 작성하려면 로그인이 필요합니다.