javascript - 使用 jQuery 更新 dom 而不是追加
问题描述
我有一个关于 jQuery 的问题:我现在将数组中的内容渲染到 dom 中:
errors.forEach(error => {
let message = error.message;
let fileName = error.fileName;
$('.errors').append("<li class=\"error-item\">".concat(fileName, " : ").concat(message, "</li><br>"));
});
但是我得到了一些更新我从中渲染内容的数组的操作,但是当我在更新数组后运行此函数时,它会追加。我现在使用.empty()
之前的,但感觉就像是一个黑客,但我希望它更新
我希望这是有道理的
我该怎么做才能更新dom而不是追加?
我希望有人可以帮助我
解决方案
jQuery 方法.html()
用给定的htmlString
. 以下演示函数logger()
将接受一个对象数组并将数据呈现在<ul>
.
let failData = [{
DOM: '.fail',
title: 'Errors: ',
header: ['File', 'Message']
},
{
item: '12ffda8a99.log',
message: 'Connection failed'
},
{
item: 'bb6200c400.log',
message: 'Corrupted download'
},
{
item: 'd93ba66731.log',
message: 'Encryption key needed'
},
{
item: '08caa5240f.log',
message: 'Mismatched certification'
},
{
item: 'dead0b8a99.log',
message: 'Insecure protocol'
}
];
let warnData = [{
DOM: '.warn',
title: 'Alerts: ',
header: ['System', 'Message']
},
{
item: 'network',
message: '1GB of data left before limit is exceeded'
},
{
item: 'file',
message: '1GB of storage left before partition is full'
},
{
item: 'power',
message: '5% of battery remains'
}
];
let infoData = [{
DOM: '.info',
title: 'Updates: ',
header: ['Priority', 'Message']
},
{
item: 'critical',
message: 'Anti-virus update required'
},
{
item: 'optional',
message: 'Media encoding update available'
}
];
const logger = array => {
let html = '';
let list;
for (let [index, object] of array.entries()) {
list = $(array[0].DOM);
if (index === 0) {
list.prev('header').html(`<u><b>${object.title}</b><output>${array.length-1}</output></u><u><b>${object.header[0]}</b><b>${object.header[1]}</b></u>`);
} else {
html += `<li><b>${object.item}</b><b>${object.message}</b></li>`;
}
}
list.html(html);
return false;
}
logger(failData);
logger(warnData);
logger(infoData);
header {
margin: 10px 0 -15px;
}
ul {
padding: 5px 0 10px;
border: 3px ridge #777;
overflow-y: hidden;
}
ul,
header {
display: table;
table-layout: fixed;
width: 90%;
}
li,
u {
display: table-row;
}
b {
display: table-cell;
width: 50%;
border-bottom: 1px solid #000;
padding-left:5px
}
output {
display: inline-block;
width: 10ch;
}
<main>
<section class='logs'>
<header></header>
<ul class='fail'></ul>
<header></header>
<ul class='warn'></ul>
<header></header>
<ul class='info'></ul>
</section>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
推荐阅读
- spring-boot - 放心使用 Spring Boot 和 Kotlin 进行 E2E Api 测试
- python - 托盘图标在窗口启动文件夹(.pyw 扩展名)上不起作用
- google-apps-script - GAS getSharingAccess() 限制范围
- python - Python:相对导入
- sockets - linux中的套接字TCP - 客户端无法插入用户名
- pine-script - 为什么不计算平均值并返回 NaN?
- vb.net - Grapecity Active 报告 - 用信纸打印,内容被截断
- azure - Azure 认知服务如何更新?
- sas - 如何在 SAS 函数中指定一系列变量?
- excel - VBA:将特定公式转换为值