【发布时间】:2020-05-19 09:54:17
【问题描述】:
我正在尝试使用 json 文件制作无限滚动的随机图像。我成功了,问题是,这应该在没有任何服务器的情况下工作。
所以我试图将所有信息放在一个“var”中,但现在这些图像不再加载了。
有没有办法在不需要服务器的情况下修复它?
这是我目前所拥有的:
HTML:
<body>
<main>
</main>
<div class="container">
<div class="text-center">
<button onclick="setTimeout(getData,2000); return false" type="submit" id="button" value="Load more" class="button">
Load more</button>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5/jquery.min.js"></script>
<script src="main.js"></script>
<script src="https://code.jquery.com/ui/jquery-ui-git.js"></script>
</body>
现在用 var imgJson 编写的所有内容都在 images.txt 中。
现在,我看到其他人在 var 中编写它,所以我这样做了,但它不起作用。
公平地说,我昨天才了解 JSON,所以我对它还很陌生。
JS:
// const URL = "images/images.txt"
var imgJson = {"items":[{
"id": 1,
"img": 'https:\/\/picsum.photos\/200\/300'
}, {
"id": 2,
"img": 'https:\/\/picsum.photos\/201\/301'
},
{
"id": 3,
"img": 'https:\/\/picsum.photos\/202\/302'
},
{
"id": 4,
"img": 'https:\/\/picsum.photos\/203\/303'
}
]}
getData();
function getData(){
let main = document.querySelector("main");
console.log("fetch some data");
fetch(imgJson)
.then(response => response.json())
.then(data => {
data.items.forEach(item => {
let fig = document.createElement("figure");
let img = document.createElement("img");
img.src = item.img;
fig.appendChild(img);
main.appendChild(fig);
});
});
}
$(document).ready(function(){
$(".button").click(function(){
$(this).addClass("active");
setTimeout(function(){
$(".button").removeClass("active");
},2000);
});
});
CSS(只有图像部分):
main {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-gap: 1rem;
width: 80vw;
margin: auto;
grid-template-rows: auto;
}
main figcaption {
font-size: 1rem;
font-family: inherit;
}
main img {
width: auto;
height: auto;
max-width: 100%;
}
【问题讨论】:
-
您不必
fetchJSON。抓取基本上是下载或上传。只需遍历imgJsonvar 即可。 -
这不会导致问题,但您不必在 JS 对象中转义正斜杠。例如
https:\/\/picsum.photos\/200\/300
标签: javascript json random image-gallery