我目前在一个真实的地产网站工作,我想使它易于维护。因此,我决定创建一个网站,其中所有列表都是从JSON文件动态生成的。我为JSON提供了一个id属性,并为清单提供了一个详细信息按钮。我在点击事件的按钮上添加了一个函数,它将id保存到localstorage
变量中,并打开一个详细信息页面,该页面也是使用相同的JSON数据动态生成的。我的问题是,如果我想分享链接,它显然是不可共享的,因为细节方面需要一个id号,以便知道哪些细节要生成。以下是我目前为止的代码:
function addElement(appendIn, value) {
let div = document.createElement('div');
div.className = "box";
let {
num,
fokep,
utcanev,
kerulet,
ar,
kepekszama,
ingtipus,
ingallapot,
negyzetmeter
} = value;
div.innerHTML = `
<div class="thumb">
<p class="total-images"><i class="far fa-image"></i><span>${kepekszama}</span></p>
<p class="type"><span>${ingtipus}</span><span>${ingallapot}</span></p>
<img src="${fokep}" class="img" alt="">
</div>
<h3 class="name">${utcanev}</h3>
<p class="location"><i class="fas fa-map-marker-alt"></i><span class="category">${kerulet}</span> Kerület</p>
<div class="flex" style="justify-content:center; align-items:center">
<p><span class="price">${ar}</span><i"> M Forint</i></p>
<p><i class="fas fa-maximize"></i><span>${negyzetmeter} m2</span></p>
</div>
<a href="property.html" class="btn num" target="_blank" rel="noopener noreferrer" style="text-align:center;" data-filter="${num}" onmousedown="detailsClick(${num})">Részletek</a>
`;
appendIn.appendChild(div);
}
this
function generates all the listings on the main page it is called here
fetch('./database/houses.json')
.then(res => res.json())
.then(json => {
// iterating products
for (let value of json) {
addElement(grid, value)
}
});
onclick函数只是将num aka id变量保存在localStorage中:
function detailsClick(num) {
localStorage.setItem("idIndex", num);
detailsIdClicked = num;
然后,在详细信息页面中,我使用相同的fetch方法从JSON文件中获取详细信息,但只针对匹配的id编号属性
let num = localStorage.getItem("idIndex");
fetch('./database/houses.json')
.then(res => res.json())
.then(json => {
// iterating products
for(let value of json){
if (num == value.num){
addDetailedElement(grid, value);
addheadElement(head,value);
}}
然后在详细信息页面中生成详细的div。但我刚刚意识到,如果我想从一台计算机共享一个链接到另一台计算机,它显然没有id号,所以它不会生成相同的网站。我想知道有没有解决这个问题的办法?我不得不承认,我是一个很新的网页开发,从来没有做过任何动态生成的网站。我刚刚意识到这个问题,现在我对它一无所知。我在想,也许附加的URL链接的id号,然后读取id号从URL生成它,但如果我这样做的网站不加载,因为没有details1.html或details2.html只有details.html
任何帮助将不胜感激
1条答案
按热度按时间66bbxpm51#
对于可共享性、可用性和可访问性,请尝试使用queryStrings。您的链接可能看起来像这样:
在project.html页面上,使用URLSearchParams获取id变量,如: