javascript - 点击搜索按钮后如何渲染大量的html?

标签 javascript html

我正在构建一个食谱搜索应用程序,但我不确定如何渲染代表我想要显示的 30 个食谱的大块 html。这些食谱卡显然必须根据我搜索的餐食类型进行更改。如何将 html 实现到我的 Js 中,以便我可以根据膳食类型更改它?

我尝试使用 insertAdjecentHTML 来做到这一点,但因为它不会用菜谱替换旧页面,而是在其上替换广告。它没有起作用: 尽管如此,这里是代码:

// recipe card markup
const renderRecipe = () => {
  const markup = `
  <div class="recipe-results__card">
    <div class="recipe-results--img-container">
      <img
        src="${data.data.hits.recipe.image}"
        alt="${data.data.hits.recipe.label}"
        class="recipe-results__img"
      />
    </div>
    <p class="recipe-results__categories">
      ${limitCategories}
    </p>
    <h2 class="recipe-results__name">
      ${data.data.hits.recipe.label}
    </h2>
  </div>
  `;
  DOM.recipeGrid.insertAdjacentHTML("beforeend", markup);
};


// fn to display the markup for every search res
export const renderResults = recipes => {
    recipes.forEach(renderRecipe);
  };

最佳答案

  1. 连接(推送到数组)HTML,这样您就可以进行一次更新
  2. 可以使用innerHTML代替insert Adjacent来替换内容
let html = [];
data.data.hits.forEach(recipe => {
  html.push(`
  <div class="recipe-results__card">
    <div class="recipe-results--img-container">
      <img
        src="${recipe.image}"
        alt="${recipe.label}"
        class="recipe-results__img"
      />
    </div>
    <p class="recipe-results__categories">
      ${limitCategories}
    </p>
    <h2 class="recipe-results__name">
      ${recipe.label}
    </h2>
  </div>
  `) });
document.getElementById("recipeGrid").innerHTML = html.join("");

关于javascript - 点击搜索按钮后如何渲染大量的html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60844317/

相关文章:

javascript - 在 Javascript 中查找模式

javascript - react Js : mountNode is not defined no-undef error

javascript - 使用 json ajax javascript jquery 和 java 自动完成搜索栏(无 PHP)

html - 如何将包含绝对元素的图像居中?

html - 在文本字段中间对齐字体

javascript - 如何在div中显示另一个html文件

javascript - 删除 Canvas 形状的问题

javascript - jQuery 计数器不工作

jquery - 响应式多级菜单不起作用

javascript - 使用html :not when element has multiple classes