javascript - 如何使用 javascript 和 HTML 模板来填充 div
问题描述
我想在 <div id = "newBook"></div> .
它是 webpack 项目中显示具有 newBook 属性的元素(书)。请告诉我是否需要一些额外的进口或类似的东西。
export class Book {
constructor(price, title, image, description) {
var bookTemplate = '<div class="col-lg-3 col-md-6 mb-4">\
<div class="card">\
<a href="#"><img class="mx-auto-d-block-card-img-top-fixed-top" src="{image}" width="335" height="340"\
alt=""></a>\
<div class="card-body">\
<h4>{title}</h4>\
<h5>{price}</h5>\
<h5>\
<a href="#">Kup teraz!</a>\
</h5>\
<p class="card-text">{description}</p>\
</div>\
<div class="card-footer">\
<small class="text-muted">★ ★ ★ ★ ★</small>\
</div>\
</div>\
</div>';
var result = bookTemplate.replace("{title}", this.title);
result = result.replace("{image}", this.image);
result = result.replace("{price}", this.price);
result = result.replace("{description}", this.description);
return result;
}
}
export function initBook() {
var newBook = new Book();
newBook.title = "Chów i hodowla trzody chlewnej";
newBook.image = "swinie.jpg";
newBook.price = "135zł";
newBook.description = "Podręcznik, który wyjaśnia jak chodować świnie.";
newBook.transform();
$("#newBook").html(newBook.transform());
}
解决方案
所以你真的很接近解决方案。我稍微清理了您的代码,以使其在您的工作中更加清晰。首先,在您的图书课程中,无需进行所有字符串替换并根据替换进行返回。您真正可以做的,以及您在这里看到的是使用简单的模板文字并直接从传入的构造函数参数进行替换。注意 ${} 语法,这是替换值。所以现在你有了一个简单的 book 类,它只有一个 bookTemplate 属性。
图书类示例:
export class Book {
constructor(price, title, image, description) {
this.bookTemplate = `
<div class="col-lg-3 col-md-6 mb-4">
<div class="card">
<a href="#">
<img class="mx-auto-d-block-card-img-top-fixed-top"
src="${image}" width="335" height="340" alt="${image}"
style="border: solid 1px #999999;"></a>
<div class="card-body">
<h4>${title}</h4>
<h5>${price}</h5>
<h5>\
<a href="#">Kup teraz!</a>
</h5>
<p class="card-text">${description}</p>
</div>
<div class="card-footer">
<small class="text-muted">★ ★ ★ ★ ★</small>\
</div>
</div>
</div>
`;
}
}
现在在 initBook 函数中,我创建了一个简单的对象字面量,其中包含需要在新 Book 构造函数中传递的属性。然后我们在您的 HTML 页面上获取一个元素的 id,以便我们可以用我们的书籍模板替换它。我们使用之前的参数创建一本新书,最后我们通过再次执行模板文字并从 Book 类调用 bookTemplate 属性,将新书模板分配给页面上的 HTML 目标。最后,我们只需调用函数 initBook() 将模板渲染到页面。
initBook 函数示例:
export function initBook() {
var params = {
title: "Chów i hodowla trzody chlewnej",
image: "swinie.jpg",
price: "135zł",
description: "Podręcznik, który wyjaśnia jak chodować świnie."
};
const book = document.getElementById("newBook");
const elements = new Book(params.price,
params.title, params.image,params.description);
console.log(elements);
book.innerHTML = `${elements.bookTemplate}`;
}
initBook();
要替换的目标 div 的 HTML 示例:
<div id="newBook"></div>
为了您的方便,这里是上面提供的代码的一个工作示例。
希望这对您有所帮助。
推荐阅读
- machine-learning - 使用文本和数字列构建机器学习模型
- node.js - 如何在我的计算机不开机的情况下“永远”托管我的 NodeJS 应用程序?
- fetch - 我想通过 fetch 函数获取数据
- c# - 如何解决 C# 中的“无法为空内容创建 CMS 签名”错误?
- c++ - 在我自己的开源项目中使用修改后的 C++ 仅标头库的常用方法是什么?
- html - 文本与 JSPDF 2.0.0 重叠并自定义字体
- flutter - 颤动中的 Twitch 视频
- android - 如何在本机反应中将服务器初始化为客户端一次?
- git - GIT 分支结帐文件未更新
- c# - .NET Core“文件具有无效值”错误