클릭 시 변하는 스크립트 중복 사용일때요~

클릭 시 변하는 스크립트 중복 사용일때요~

QA

클릭 시 변하는 스크립트 중복 사용일때요~

본문

제가 구현하고 싶은건

비스포크 냉장고 처럼 클릭시 왼쪽 오른쪽 컬러가 바뀌는 거거든요~ 

33102762_1681260069.3926.png

 

 

그래서 알아본게 썸네일 갤러리 형태구요 

간단한?스크립트가 있는데 중복 사용이 안되더라구요

같은 스크립트도 한 공간안에서 중복 사용하고 싶은데 어떻게 짜야할까요?

지금 하고 있는 스크립트 첨부합니다~

 

 


<style>
#container{margin-bottom: 80px;}
#photo{
  display: block;
  width: 960px;
  border: 10px solid black;
  margin: 0 auto;
  box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.6);
}
#gallery{text-align: center;}
 
#gallery > li {
  display: inline-block;
  margin: 0 10px;
}
 
#gallery > li > img{
  display: block;
  width: 200px;
  border: 5px solid black;
  cursor: pointer;
}

#photo2{
  display: block;
  width: 960px;
  border: 10px solid black;
  margin: 0 auto;
  box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.6);
}
#gallery2{text-align: center;}
 
#gallery2 > li {
  display: inline-block;
  margin: 0 10px;
}
 
#gallery2 > li > img{
  display: block;
  width: 200px;
  border: 5px solid black;
  cursor: pointer;
}
</style>

<div id="container">
    <img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="photo" id="photo">
</div>
 
<ul id="gallery">
    <li><img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="thumbnail"></li>
    <li><img src="https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_960_720.jpg" alt="thumbnail"></li>
    <li><img src="https://cdn.pixabay.com/photo/2022/12/31/13/11/fruits-7688632_960_720.jpg" alt="thumbnail"></li>
</ul>

<div id="container">
    <img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="photo2" id="photo2">
</div>
 
<ul id="gallery2">
    <li><img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="thumbnail"></li>
    <li><img src="https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_960_720.jpg" alt="thumbnail"></li>
    <li><img src="https://cdn.pixabay.com/photo/2022/12/31/13/11/fruits-7688632_960_720.jpg" alt="thumbnail"></li>
</ul>

<script>
 
  var photo = document.getElementById("photo");
  var thumbnail = document.querySelectorAll("#gallery > li > img");
 
  for ( var i = 0; i < thumbnail.length; i++ )
    thumbnail[i].addEventListener("click", function () {
 
      photo.setAttribute("src", this.getAttribute("src"));
 
    });
 
</script>
 

33102762_1681259966.7243.png

이 질문에 댓글 쓰기 :

답변 2


<div id="galleryWrap">
    <div id="container">
        <img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="photo" id="photo">
    </div>
     
    <ul id="gallery">
        <li><img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" data-thumb-target="photo" alt="thumbnail"></li>
        <li><img src="https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_960_720.jpg" data-thumb-target="photo" alt="thumbnail"></li>
        <li><img src="https://cdn.pixabay.com/photo/2022/12/31/13/11/fruits-7688632_960_720.jpg" data-thumb-target="photo" alt="thumbnail"></li>
    </ul>
    <div id="container">
        <img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="photo2" id="photo2">
    </div>
     
    <ul id="gallery2">
        <li><img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" data-thumb-target="photo2" alt="thumbnail"></li>
        <li><img src="https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_960_720.jpg" data-thumb-target="photo2" alt="thumbnail"></li>
        <li><img src="https://cdn.pixabay.com/photo/2022/12/31/13/11/fruits-7688632_960_720.jpg" data-thumb-target="photo2" alt="thumbnail"></li>
    </ul>
</div>
<script>
    let thumbnails = document.querySelectorAll("#galleryWrap li > img");
    for ( var i = 0; i < thumbnails.length; i++ )
        thumbnails[i].addEventListener("click", function (e) {
        let bigPhotoId = e.currentTarget.dataset.thumbTarget? e.currentTarget.dataset.thumbTarget : 'photo';
        document.querySelector(`#${bigPhotoId}`).setAttribute("src", this.getAttribute("src"));
    });
</script>
 

이렇게 이미지에  dataset으로 타겟 설정해서 하면 되지 않을가요?

간략한 코드는 다음분께 패스~~ ㅋ


 
 
<style>
    .container{margin-bottom: 80px;}
    .photo{
      display: block;
      width: 960px;
      border: 10px solid black;
      margin: 0 auto;
      box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.6);
    }
    .gallery{text-align: center;}
     
    .gallery > li {
      display: inline-block;
      margin: 0 10px;
    }
     
    .gallery > li > img{
      display: block;
      width: 200px;
      border: 5px solid black;
      cursor: pointer;
    }
    
    </style>
 
    <div class="gallery-wrap">
        <div class="container">
            <img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="photo" class="photo">
        </div>
         
        <ul class="gallery">
            <li><img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="thumbnail"></li>
            <li><img src="https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_960_720.jpg" alt="thumbnail"></li>
            <li><img src="https://cdn.pixabay.com/photo/2022/12/31/13/11/fruits-7688632_960_720.jpg" alt="thumbnail"></li>
        </ul>
 
    </div>
    
    <div class="gallery-wrap">
        <div class="container">
            <img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="photo2" class="photo">
        </div>
        
        <ul class="gallery">
            <li><img src="https://cdn.pixabay.com/photo/2023/03/06/14/58/iguana-7833655_960_720.jpg" alt="thumbnail"></li>
            <li><img src="https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_960_720.jpg" alt="thumbnail"></li>
            <li><img src="https://cdn.pixabay.com/photo/2022/12/31/13/11/fruits-7688632_960_720.jpg" alt="thumbnail"></li>
        </ul>
    </div>
    
    <script>
        var thumbnails = document.querySelectorAll(".gallery > li > img");
        // console.log(thumbnails);
        thumbnails.forEach(function(thumbnail){ // 배열(thumbnails)의 갯수만큼 반복문 실행, (thumbnail)은 반복문 안에서 해당하는 객체. 
            // console.log(thumbnail);
            thumbnail.addEventListener("click", function(){
                console.log(this);
 
                var galleryWrap = thumbnail.parentElement.parentElement.parentElement; // li -> ul -> .gallery-wrap 찾음.
                var fullPhoto = galleryWrap.querySelector(".photo");
 
                fullPhoto.setAttribute("src", this.getAttribute("src"));
                
                
            })
        })
    </script>
     
 
답변을 작성하시기 전에 로그인 해주세요.
전체 123,735 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT