javascript - 使用 javascript 创建多个元素
问题描述
我有一个 html 元素树示例(如下),我想为我在数据库中获得的每个匹配项返回相关数据。假设有 5 个匹配项。我是否需要创建 5 个给定元素并使用 javascript 数据填充它们?
我要运行一个循环,但这看起来会耗费性能(为每个匹配创建所有元素树)。相反,我可以使用给定的元素(图片)用javascript填充它并将其放到dom上(x次)吗?如果可能怎么办?
<!-- sample elem -->
<div class="col-12 col-md-4" style="display: none">
<div class="card my-3 mx-1">
<a href="#"><img src="" alt="img"></a>
<div class="card-body">
<div class="row">
<div class="col-12 p-1">Country</div>
<div class="col-3 p-1">State</div>
<div class="col-4 p-1">City</div>
</div>
</div>
</div>
</div>
解决方案
对于 15-20 个元素和单独的标记,性能影响并不大。
但是,如果您可以证明它很慢,请知道字符串更快。所以一个更快的方法是这样的:
- 将标记模板存储为字符串
- 使用最终标记创建一个字符串 - 它可以根据需要多次重复模板,显然充满了
- 在目标节点中插入标记
下面是它的样子:
const products = [{ title: 'gearbox' }, { title: 'drive shaft' }, { title: 'spark plug'}]
const myTemplate = '<div class="product">{title}</div>'
const finalMarkup = products.map(({ title }) => myTemplate.replace('{title}', title))
document.getElementId('targetNode').innerHtml = finalMarkup
推荐阅读
- javascript - 从 3 个向量中获取角度,不排除钝角的非反射
- c++ - 如何将 single.c/.h 文件连接到 cmake 项目?
- firebase - 多个流到 Firebase 文档而不进行处理
- angularjs - 在AngularJS中从另一个模块导入组件的最佳方法是什么?
- php - 是否可以重用带有变量的双引号字符串?
- react-native - 如何获取 Navigation AppContainer 的参数?
- json - 错过将 Json 映射到列表/数组的最后一步(颤振)
- excel - 使用 vbscript 从 Excel 列数据中选择随机值不起作用
- ios - iOS 广播上传扩展、框架和应用程序之间的通信
- sql - 行到列,具有复杂的 agg 函数,将计算字段转换为列