从json文件动态生成div问题共享链接

s6fujrry  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(130)

我目前在一个真实的地产网站工作,我想使它易于维护。因此,我决定创建一个网站,其中所有列表都是从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
任何帮助将不胜感激

66bbxpm5

66bbxpm51#

对于可共享性、可用性和可访问性,请尝试使用queryStrings。您的链接可能看起来像这样:

<a href="/project.html?id=123">Get Details</a>

在project.html页面上,使用URLSearchParams获取id变量,如:

// this line is just for testing
let url = new URL('https://test.com/project.html?id=123'); 
// you would use something like this:
// let url = window.location
let params = new URLSearchParams(url.search);
let id = params.get('id');
console.log(`the id is ${id}`);

相关问题