
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
앨범 상세 조회 및 수정 기능을 만들기 위해 부트 스트랩에서 모달을 갖고 와서 우선 모달을 띄워보려고 했는데 모달이 띄워지지 않습니다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>나만의 추억 앨범</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-pzjw8B+U8h6PELs9QmFWRiQ/x/kLrA7F+kzXXLwPeXMR95o+se5StX9vqb0yvq" crossorigin="anonymous"></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <style> @import url('https://fonts.googleapis.com/css2?family=Black+Han+Sans&family=Noto+Sans+KR:wght@200&display=swap'); * { font-family: 'Black Han Sans', sans-serif; font-family: 'Noto Sans KR', sans-serif; } .mytitle { height: 250px; color: white; display: flex; flex-direction: column; align-items: center; justify-content: center; background-image: url('https://images.unsplash.com/photo-1511992243105-2992b3fd0410?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80'); background-position: center; background-size: cover; } .mytitle>button { width: 150px; height: 50px; background-color: transparent; color: white; border: 1px solid white; border-radius: 5px; margin-top: 20px; } .mycards { width: 1200px; margin: 30px auto 0px auto; } .mypostingbox { width: 500px; margin: 30px auto 0px auto; padding: 20px; box-shadow: 0px 0px 3px 0px blue; border-radius: 5px; } .mybtn { display: flex; flex-direction: row; align-items: center; justify-content: center; } .mybtn>button { margin: 0px 5px 0px 5px; } .text-hidden { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } </style> <script type="module"> // Firebase SDK 라이브러리 가져오기 import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js"; import { getFirestore } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js"; import { collection, addDoc } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js"; import { getDocs } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js"; // Firebase 구성 정보 설정 // For Firebase JS SDK v7.20.0 and later, measurementId is optional const firebaseConfig = { apiKey: "AIzaSyCLaWzL8oAv7E0itukYJvxSeVI6r4q_j50", authDomain: "sparta-6aa4c.firebaseapp.com", projectId: "sparta-6aa4c", storageBucket: "sparta-6aa4c.appspot.com", messagingSenderId: "863460667202", appId: "1:863460667202:web:9b21503063c801036062db", measurementId: "G-Q6NW6NL4JT" }; // Firebase 인스턴스 초기화 const app = initializeApp(firebaseConfig); const db = getFirestore(app); $("#postingBtn").click(async function () { let image = $('#imageInput').val(); let title = $('#titleInput').val(); let content = $('#contentInput').val(); let date = $('#dateInput').val(); let doc = { 'image': image, 'title': title, 'content': content, 'date': date } await addDoc(collection(db, "albums"), doc); alert('저장 완료!'); window.location.reload(); }) $('#saveBtn').click(async function () { $('#postingbox').toggle(); }) let url = "http://spartacodingclub.shop/sparta_api/seoulair"; fetch(url).then(res => res.json()).then(data => { let IDEX_NM = data['RealtimeCityAir']['row'][0]['IDEX_NM']; $('#msg').text(IDEX_NM); }) $('#cardsBox').empty(); let docs = await getDocs(collection(db, "albums")); docs.forEach((doc) => { let row = doc.data(); let image = row['image']; let title = row['title']; let content = row['content']; let date = row['date']; let cardHtml = ` <div class="col"> <div class="card h-100"> <img src="${image}" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">${title}</h5> <p class="card-text text-hidden">${content}</p> </div> <div class="card-footer"> <small class="text-body-secondary">${date}</small> </div> </div> </div> `; $('#cardsBox').append(cardHtml); }); </script> </head> <body> <div class="mytitle"> <h1>나만의 추억 앨범</h1> <p>현재 서울의 미세먼지 : <span id="msg"></span></p> <button id="saveBtn">추억 저장하기</button> <!--모달 버튼--> <button type="button" data-bs-toggle="modal" data-bs-target="#myModal">Launch modal</button> </div> <div class="mypostingbox" id="postingbox" style="display: none;"> <div class="form-floating mb-3"> <input type="email" class="form-control" id="imageInput" placeholder="앨범 이미지"> <label for="floatingInput">앨범 이미지</label> </div> <div class="form-floating mb-3"> <input type="email" class="form-control" id="titleInput" placeholder="앨범 제목"> <label for="floatingInput">앨범 제목</label> </div> <div class="form-floating mb-3"> <input type="email" class="form-control" id="contentInput" placeholder="앨범 내용"> <label for="floatingInput">앨범 내용</label> </div> <div class="form-floating mb-3"> <input type="email" class="form-control" id="dateInput" placeholder="앨범 날짜"> <label for="floatingInput">앨범 날짜</label> </div> <div class="mybtn"> <button id="postingBtn" type="button" class="btn btn-dark" style="background-color: blue;">기록하기</button> <button type="button" class="btn btn-outline-dark">닫기</button> </div> </div> <!--모달 div--> <div class="modal fade" id="myModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h1 class="modal-title fs-5" id="exampleModalLabel">New message</h1> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <form> <div class="mb-3"> <label for="recipient-name" class="col-form-label">Recipient:</label> <input type="text" class="form-control" id="recipient-name"> </div> <div class="mb-3"> <label for="message-text" class="col-form-label">Message:</label> <textarea class="form-control" id="message-text"></textarea> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Send message</button> </div> </div> </div> </div> <div class="mycards"> <div class="row row-cols-1 row-cols-md-3 g-4" id="cardsBox"> </div> </div> </body> </html>
