【发布时间】:2022-01-09 04:56:46
【问题描述】:
请在此代码中帮助我 我是 UI 设计师,对代码一无所知 我有 Json 文件有数据以 id 1 到 id 25 开头, 我使用 id 和 math.random() 加载此数据代码工作但我的问题相同的 id 显示两次或两次以上我只需要显示 25 个 id 唯一 例如结果是 (2, 4, 18, 14, 7, 13, 13, 4) 但我不希望同一个 id 显示多个 并且当 25 个 id 显示它们都停止功能时
json文件的后端代码
const express = require('express');
const app = express();
const importData = require("./data.json");
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/posts', (req, res) => {
res.send(importData);
});
app.get('/posts/:id', (req, res) => {
const post = importData.find(c => c.id === parseInt(req.params.id));
if (!post) res.status(404).send("Error");
res.send(post);
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", '*');
res.header("Access-Control-Allow-Credentials", true);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header("Access-Control-Allow-Headers", 'Origin,X-Requested-With,Content-Type,Accept,content-type,application/json');
next();
});
app.listen(port, () => {
console.log(`Example app listening at ${port}`);
});
前端js文件
const container = document.getElementById('container'); const loading = document.querySelector('.loading');
// this load 4 posts
getPost();
getPost();
getPost();
getPost();
window.addEventListener('scroll', () => {
const { scrollTop, scrollHeight, clientHeight } = document.documentElement;
console.log( { scrollTop, scrollHeight, clientHeight });
if(clientHeight + scrollTop >= scrollHeight - 5) {
// show the loading animation
showLoading();
}
});
function showLoading() {
loading.classList.add('show');
// load more data
setTimeout(getPost, 300)
}
async function getPost() {
// the orginal url have (25) id in the json file
// tips this is fake url i can't post the orginal url because it will my server
const postResponse = await fetch(`https://example.com/posts/${getRandomNr()}`);
const postData = await postResponse.json();
const data = { post: postData};
addDataToDOM(data);
console.log(data);
}
function getRandomNr() {
return Math.floor(Math.random() * 25) + 1;
}
function addDataToDOM(data) {
const postElement = document.createElement('div');
postElement.classList.add('blog-post');
postElement.innerHTML = `
<h2 class="title">${data.post.title}</h2>
<p class="text">${data.post.body}</p>
<div class="user-info">
<img src="${data.post.src}" alt="${data.post.title}" />
<span>${data.post.title}</span>
</div>
`;
container.appendChild(postElement);
loading.classList.remove('show');
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container" id="container">
<h1>Blog Posts</h1>
<!-- <div class="blog-post">
<h2 class="title">Blog post title</h2>
<p class="text">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Provident quod debitis in repellat veritatis minus ab ex maiores itaque quis.</p>
<div class="user-info">
<img src="https://randomuser.me/api/portraits/women/26.jpg" alt="pic" />
<span>Leah Taylor</span>
</div>
</div> -->
</div>
<div class="loading">
<div class="ball"></div>
<div class="ball"></div>
<div class="ball"></div>
</div>
<script src="script.js"></script>
</body>
</html>
【问题讨论】:
标签: javascript json api