
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
유튜브 동영상 대신에 사진으로만 4장 집어넣으려고 기존 영상 코드 지우고 이미지 1,2,3이랑 같은 코드 넣고 숫자만 변경해주었는데
사진까지는 잘 들어오고 alert도 잘 나오는데 사진 밑에 설명만 이상하게 나와서요..
4번째 사진에 포인터 올려도 반응이 없고 오히려 3번째 사진에 3번째 사진설명만 나타나는데 어디를 잘못 붙여넣었는지 봐주실 수 있으실까요..?

작성한 코드 및 에러 메세지
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
<style>
body{
margin: 0;
display: flex;
justify-content: center;
background-image: url(배경.png);
}
.container{
width: 390px;
background-color: #ff9d73;
height: 100%;
}
.photos{
margin-top: 30px;
}
.photo-frame{
background-color: white;
margin: 20px;
height: 200px;
background-size: cover;
/* photo-frame 밑에있는 요소를 photo-frame기준으로 어디에 위치할 것인지*/
position: relative;
cursor: pointer;
}
.footer{
display: flex;
/* row 로 잡으면 수평이 아닌 수직으로 정렬된다 */
flex-direction: column;
/* column으로 잡아주었던 것을 가운데(center)로 모아준다 */
align-items: center;
}
.f-title{
font-size: 25px;
color: white;
}
.f-date{
font-size: 15px;
font-weight: 500;
color: white;
}
.photo-description{
color: white;
background-color: black;
width: fit-content;
padding: 0 20px ;
margin-bottom: 10px;
border-radius: 10px;
/* relative 기준으로 잡는다*/
position: absolute;
/* 프레임 기준으로 밑에서 0만큼 올라와라 */
/* margon-bottom에 10px 값을 부여했으므로 그 만큼 띄운다 */
bottom: 0%;
/* 왼쪽에서 정확히 50%만큼 정확히 가운데 정렬 */
transform: translate(-50%);
left: 50%;
opacity: 0;
}
.video{
width: 100%;
height: 100%;
}
.showText{
opacity: 0;
}
.hideText{
opacity: 1;
transition: opacity 0.5s linear;
}
#image1{
background-image: url(./img1.png);
}
#image2{
background-image: url(./img2.png);
}
#image3{
background-image: url(./img3.png);
}
#image4{
background-image: url(./img4.png);
}
</style>
<script>
// 텍스트가 보여지는 기능
// 1. 몇 번째 사진에 마우스가 올라갔는지 확인(if문)
// 2. 해당 사진을 찾아 hideText class를 지워주고, showText는 삽입해줌
function showText(number) {
if (number === 1) {
document.querySelector("#desc1").classList.remove("hideText");
document.querySelector("#desc1").classList.add("showText");
} else if (number === 2) {
document.querySelector("#desc2").classList.remove("hideText");
document.querySelector("#desc2").classList.add("showText");
} else {
document.querySelector("#desc3").classList.remove("hideText");
document.querySelector("#desc3").classList.add("showText");
}
}
// 텍스트가 감춰지는 기능
// 1. 몇 번째 사진에서 마우스가 벗어났는지 확인(if문)
// 2. 해당 사진을 찾아 shotText class를 지워주고, hideText는 삽입해줌
function hideText(number) {
if (number === 1) {
document.querySelector("#desc1").classList.remove("showText");
document.querySelector("#desc1").classList.add("hideText");
} else if (number === 2) {
document.querySelector("#desc2").classList.remove("showText");
document.querySelector("#desc2").classList.add("hideText");
} else {
document.querySelector("#desc3").classList.remove("showText");
document.querySelector("#desc3").classList.add("hideText");
}
}
// 클릭 기능
// 1. 선택된 사진의 숫자를 가진 텍스트를 alert 형태로 출력해줌
function alertText(number) {
alert(`${number}번째 추억이에요! 눌러주셔서 감사합니다 :)`);
}
</script>
</head>
<body>
<div class="container">
<div class="photos">
<div id="image1" class="photo-frame"
id="image1"
class="photo-frame"
onmouseover="hideText(1)"
onmouseout="showText(1)"
onclick="alertText(1)"
>
<span id="desc1" class="photo-description">
첫 번째 이미지 설명
</span>
</div>
<div id="image2" class="photo-frame"
id="image1"
class="photo-frame"
onmouseover="hideText(2)"
onmouseout="showText(2)"
onclick="alertText(2)"
>
<span id="desc2" class="photo-description">
두 번째 이미지 설명
</span>
</div>
<div id="image3" class="photo-frame"
id="image1"
class="photo-frame"
onmouseover="hideText(3)"
onmouseout="showText(3)"
onclick="alertText(3)"
>
<span id="desc3" class="photo-description">
세 번째 이미지 설명
</span>
</div>
<div id="image4" class="photo-frame"
id="image1"
class="photo-frame"
onmouseover="hideText(4)"
onmouseout="showText(4)"
onclick="alertText(4)"
>
<span id="desc4" class="photo-description">
네 번째 이미지 설명
</span>
</div>
</div>
<div class="footer">
<p class="f-title">Happy Lunch Time</p>
<p class="f-date">2023.02.02</p>
</div>
</div>
</body>
</html>
