javascript

이미지 이벤트& 메뉴 토글 & 1~100까지 랜덤 배열

grovy 2023. 3. 30. 20:08
728x90

마우스 위치에 따른 이미지 변경

<body>
    <div>
        <img src="icon03.jpg">
    </div>
</body>
<script>
    let imgBox = document.querySelector("img");
    imgBox.addEventListener("mouseover", ()=>{
        imgBox.src="icon04.jpg";
    });
    imgBox.addEventListener( "mouseout", ()=>{
        imgBox.src="icon03.jpg";
    })
</script>

위에서 mouseover & mouseout 이벤트가 발생할때 마다 

img의 src 값을 변경 하였어요 !

첫번째 문제라 난이도가 easy하네요 

 

메뉴의 버튼을 클릭했을때 마다 슬라이드 토글

<body>
  <button id="bttn">클릭해주세요</button>
  <nav id="nav">
    <ul>
      <li><a href="#">Javascript</a></li>
      <li><a href="#">Typescript</a></li>
      <li><a href="#">Node.js</a></li>
    </ul>
  </nav>
</body>
<script>
    document.querySelector("#bttn").addEventListener("click",()=>{
        document.querySelector("#nav").classList.toggle('active');
        document.querySelector("#bttn").classList.toggle('active');
    });
</script>

classList.toggle??

Element.classList

classList는 DOMTokenList 객체로 element의 class 속성을 보여주고 &

classList가 읽기전용이어도 다양한 메소드를 통해 class 목록을 조작할 수 있습니다.

그니까 우리가 코드를 작성할때 classList로 속성값을 추가하거나 값을 변경할수 있어요 ! 

Element.classList.toggle
toggle은 동전의 앞면과 뒷면이 순서대로 나오는 거에요.

즉 0과 1이 반복되는 행위를 의미합니다.
기존 값이 0이었다면 1로 바뀌고

기존 값이 1이었다면, 0으로 바뀌게 됩니다.
그래서 toggle 메서드는 클래스가 존재한다면 클래스를 제거하고, 

클래스가 존재하지 않는다면 클래스를 추가하는 메서드입니다.
document.querySelector("#bttn").classList.toggle('active');

위소스에서 active는 계속 삭제 추가 삭제 추가 되는거에요 ! 
 
이건 예전에 했던건데 classList를 적다가 생각나서 간략히 정리해 볼게요 ! 
Element.classList.add
명시된 클래스를 추가

Element.classList.remove
명시된 클래스를 제거

1~100까지 랜덤 배열 생성 (수업시간에 잠깐 얘기했던..)

//0부터 99까지 값이 들어갈 배열을 선언했어요 
let numArr01=[] ;
// 임의의값 arrChk= Math.floor(Math.random()*(100))을 통해서 임의의값을 넣을거에요
let arrChk = 0;

for (let i = 0 ; numArr01.length <100; i++ ) {
    arrChk= Math.floor(Math.random()*(100));
    //indexOf를 통해서 임의로 생성된 값이 numArr01안에 없을경우에만 추가해주는거에요
    if(numArr01.indexOf(arrChk) == -1){
        numArr01.push(arrChk);
    }
}

indexOf와 push를 이용했는데...

결과는 만족스럽지 않아요 

왜냐면...? 

반복횟수가 너무 많다...

반복횟수를 줄일수 있는 방법을 생각해 봐야겠어요 ... 

반복횟수를 최소화 한건.. 다음에 올릴게요 ! 

오늘도 고생하셨어요 

 

빠읭