웹개발

제이쿼리 이용해서 새로운 카드를 생성하는 코드 짜기

민아당긴아 2024. 7. 12. 15:27

목표

중앙에 있는 카드에 정보를 입력하면 아래와 같이 새로운 정보 카드가 추가되는 기능 구현

카드를 추가하는 함수 makecard()

  function makecard() {
    let image = $("#url").val();
    let title = $("#title").val();
    let star = $("#star").val();
    let comment = $("#comment").val();

    let temp_html = `
  <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">${star}</p>
        <p class="card-text">${comment}</p>
      </div>
    </div>
  </div>
  `;
    $("#card").append(temp_html);
  }

1. 네 개의 변수 설정: 영화 포스터 url, 영화 제목, 별점, 코멘트

2. 새로운 카드에 들어갈 정보를 담는 변수 temp_html 설정: 원래 카드 HTML 코드를 그대로 긁어온 다음, 새로운 정보가 들어갈 자리에 ${}를 넣는다.

3. ${"#card"}.append(temp_html)을 통해 새로운 카드를 추가한다.

문제 및 해결방법

<select class="form-select" id="star">
  <option selected>Choose Star</option>
  <option value="1">⭐</option>
  <option value="2">⭐⭐</option>
  <option value="3">⭐⭐⭐</option>
  <option value="4">⭐⭐⭐⭐</option>
  <option value="5">⭐⭐⭐⭐⭐</option>
</select>

별점이 별 아이콘이 아니라 숫자가 나오게 된다.이는 value값에 별 모양 아이콘이 아니라 숫자가 있기 때문이다.

<select class="form-select" id="star">
  <option selected>Choose Star</option>
  <option value="⭐">⭐</option>
  <option value="⭐⭐">⭐⭐</option>
  <option value="⭐⭐⭐">⭐⭐⭐</option>
  <option value="⭐⭐⭐⭐">⭐⭐⭐⭐</option>
  <option value="⭐⭐⭐⭐⭐">⭐⭐⭐⭐⭐</option>
</select>

따라서 이를 해결하기 위해 value값에 별 아이콘을 넣으면 된다. 다른 방법들도 많지만 이게 가장 직관적인 방법!