$(documetnt).ready 함수의 의미
페이지가 모두 로드된 직후 제일 먼저 실행할 자바스크립트 코드를 넣는 곳입니다.
즉 접속할 때, 새로고침 할 때 마다 이부분이 다시 실행된다.
일단 접속하면 관심 상품을 보여줘야 하기 때문에 맨 하단을 보면 showProduct() 함수를 실행하도록 작성하였다.
우선 이녀석을 만들어 보자
static > basic.js > showProduct()
function showProduct() {
/**
* 관심상품 목록: #product-container
* 검색결과 목록: #search-result-box
* 관심상품 HTML 만드는 함수: addProductItem
*/
// 1. GET /api/products 요청
$.ajax({
type: 'GET',
url: '/api/products',
success: function (response){
// 2. 관심상품 목록, 검색결과 목록 비우기
$('#product-container').empty();
$('#search-result-box').empty();
// 3. for 문마다 관심 상품 HTML 만들어서 관심상품 목록에 붙이기!
for (let i=0; i<response.length; i++){
let product = response[i];
let tempHtml = addProductItem(product);
$('#product-container').append(tempHtml);
}
}
})
}
execSearch 처럼 ajax로 먼저 products 데이터를 불러와서 관심상품 목록과 검색 결과를 비워준 후
for문 마다 관심상품 HTML을 만들어서 하나씩 붙이면 되는데 그 HTML를 addProductItem() 에서 설정해 준다.
static > basic.js > addProductItem ()
function addProductItem(product) {
// link, image, title, lprice, myprice 변수 활용하기
return ` <div class="product-card" onclick="window.location.href='${product.link}'">
<div class="card-header">
<img src="${product.image}"
alt="">
</div>
<div class="card-body">
<div class="title">
${product.title}
</div>
<div class="lprice">
<span>${numberWithCommas(product.lprice)}</span>원
</div>
<div class="isgood ${product.lprice <= product.myprice ? '':'none'}">
최저가
</div>
</div>
</div>`;
}
css에서 product-card 클래스를 가져와서 데이터가 들어갈 자리를 수정한다.
lprice 는 단위별 콤마가 들어갈 수 있게 numberWithCommas를 이용하고
최저가 딱지를 붙여주는 isgood 클래스는 3항 연산자를 이용하여 최저가와 내가 원하는 가격을 비교하여
isgood 과 none 으로 출력한다.
'나만의 select shop 만들기' 카테고리의 다른 글
등록한 관심상품 최저가 설정하기 (0) | 2020.12.10 |
---|---|
스케줄러 만들기 (0) | 2020.12.09 |
관심 상품 등록하기 (0) | 2020.12.08 |
상품 검색 기능 만들기 (0) | 2020.12.08 |
HTML, Css, 이미지파일 (0) | 2020.12.07 |