javascript_series5_ajax_2
by aelgy369
HTML
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</head>
<body>
<div class="container d-flex justify-content-center mt-5">
<div class="card w-100">
<div>
<button id='btn' class="btn btn-primary mt-2 ms-2">Load Products</button>
</div>
<hr>
<div class="card-body">
<ul class="row list-unstyled">
</ul>
</div>
</div>
</div>
</body>
</html>
JavaScript
const list = document.querySelector('.row')
function loadProduct() {
fetch('https://fakestoreapi.com/products')
.then(res => res.json())
.then(json => {
// 要做一個 for 迴圈
json.forEach((data) => {
loadData(data)
})
})
.catch((error) => {
alert("抱歉,請稍後重新嘗試。");
});
}
function loadData(data) {
const li = document.createElement('li');
const card = document.createElement('div');
const image = document.createElement('img');
const cardBody = document.createElement('div')
const cardTitle = document.createElement('h5');
const cardDetail = document.createElement('button');
li.className = "col-md-4 col-lg-3 mb-3";
card.className = "card text-bg-light h-100";
image.className = "object-fit-contain h-50";
cardBody.className = 'card-body d-flex flex-column';
cardTitle.className = 'card-title flex-grow-1 mt-5';
cardDetail.className = 'btn btn-primary';
image.setAttribute('src', data.image);
list.append(li);
li.append(card);
card.append(image, cardBody);
cardBody.append(cardTitle, cardDetail);
cardTitle.textContent = data.title;
cardDetail.textContent = "detail";
cardDetail.onclick = () => {
alert(data.id);
alert(data.category);
alert(data.description);
}
}
const btn = document.querySelector('#btn');
btn.onclick = loadProduct;