一个页面上有10个订单,每个订单信息通过 /api/order/{id}获取详细信息, 点击一个"刷新"按钮重新获取订单信息,并按订单最后更新时间倒序排列。(用原生JS)
时间: 2024-05-11 18:17:39 浏览: 139
好的,这是一个Web开发的问题,可以给出答案。请看下面的代码:
```
function refreshOrders() {
var orders = document.getElementsByClassName("order");
var orderIds = [];
for (var i = 0; i < orders.length; i++) {
var orderId = orders[i].getAttribute("data-order-id");
orderIds.push(orderId);
}
for (var i = 0; i < orderIds.length; i++) {
var orderId = orderIds[i];
var orderDetailUrl = "/api/order/" + orderId;
fetch(orderDetailUrl)
.then(function(response) {
return response.json();
})
.then(function(orderDetail) {
var orderElement = document.querySelector("[data-order-id='" + orderDetail.id + "']");
orderElement.querySelector(".order-status").textContent = orderDetail.status;
orderElement.querySelector(".order-updated-at").textContent = orderDetail.updatedAt;
});
}
}
document.querySelector("#refresh-btn").addEventListener("click", function() {
refreshOrders();
var orders = document.getElementsByClassName("order");
Array.from(orders).sort(function(a, b) {
var aUpdatedAt = new Date(a.querySelector(".order-updated-at").textContent);
var bUpdatedAt = new Date(b.querySelector(".order-updated-at").textContent);
return bUpdatedAt - aUpdatedAt;
}).forEach(function(order) {
order.parentNode.appendChild(order);
});
});
```
其中,每个订单的信息已经在HTML中以如下代码呈现:
```
<div class="order" data-order-id="1">
<div class="order-status"></div>
<div class="order-updated-at"></div>
</div>
```
在每个订单元素上面的属性"data-order-id"中存储了订单的ID。点击"刷新"按钮时,先获取所有订单元素的ID,用ID获取详细信息,并更新订单状态和更新时间。
然后,通过将所有订单元素转换成一个数组,使用"sort"方法按照更新时间倒序排列,并用"appendChild"方法将订单元素重新放回页面中。
阅读全文