javascript - 每次调用 JS 函数时如何生成一个新的 HTML 元素
问题描述
我一直在开发一个使用蒸汽通过护照和会话登录的网络应用程序。最近我一直在努力寻找一种在页面上创建持久 html 的好方法。让我解释一下,这是我的 index.ejs :
<!DOCTYPE html>
<html lang="en">
<%- include('partials/navbar') %>
<body>
<section id="chat"></section>
<section id="main" style="flexcol center" class="flexcol">
<button id="newMatch">Create new match</button>
<div class="match"></div>
</section>
</body>
<script src=".././scripts/jquery.js"></script>
<script src=".././scripts/script.js"></script>
</html>
我试图制作一个 js 函数,<div class="match"></div>
每次调用时都会插入一个新函数,但没有成功。这是代码:
//CONTENT GENERATOR
let main = document.querySelector('#main');
let matchDiv = document.createElement('div');
let matchDivText = document.createElement('h3');
function createMatch(){
$(matchDivText).append('New match').appendTo($(matchDiv));
$(matchDiv).addClass('match flex center').appendTo(main);
};
$('button').click(() => {
createMatch();
});
现在,我的函数并没有真正完美地工作,它确实创建了一个新的 DIV,附加了 h2 并添加了类,但如果多次调用它看起来像这样(调用 3 次):
我的问题是:如何让函数每次都创建一个新的 DIV,以及如何让这些 DIVS 在刷新后不消失?
解决方案
问题是变量不在函数中,这样做:
function createMatch () {
let main = document.querySelector('#main');
let matchDiv = document.createElement('div');
let matchDivText = document.createElement('h3');
$(matchDivText).append('New match').appendTo($(matchDiv));
$(matchDiv).addClass('match flex center').appendTo(main);
};
$('button').click(() => {
createMatch();
});
推荐阅读
- amazon-web-services - 将 AWS Glue 作业迁移到 EC2
- angular - 角。使用 @viewchild 将 templateRef 与服务一起传递
- angularjs - Angular 从 HTML 中的 DIV 类生成 PDF 文档
- java - 从准备但未发送的 android 应用程序发送彩信
- opencart - “Opencart > 销售 > 订单”多个“打印发票”或“打印发货清单”不起作用
- php - 如何从 Laravel 中的数据透视表中删除行?
- tfs - 如何为解决方案选择添加变量
- python - 在python中删除重复的对象列表
- android - java.io.UnsupportedEncodingException: java.nio.charset.CharsetICU[UTF-8]
- python - 玩家卡在墙pygame中