javascript - 防止 javascript 无休止地附加 dom
问题描述
我有一个 javascript,它根据它为每个字段接收到的 JSON 响应来调整 dom。一个例子是:
if (data.errors.firstName) {
document.getElementById("firstName-group").classList.add("has-error");
let helpBlock = document.createElement('div');
helpBlock.classList.add('help-block');
helpBlock.innerHTML = data.errors.firstName;
document.getElementById("firstName-group").append(helpBlock);
}
这里的问题是,这将导致 dom 像这样重复附加:
那么在附加dom时如何避免这个问题呢?这应该清除任何附加的消息吗?或者如何做到这一点?
解决方案
您可以检查 #firstName-group 元素下是否已经有 .help-block div,如果没有,则仅追加。
这是一个例子:
if (data.errors.firstName && !document.querySelector('#firstName-group .help-block')) {
document.getElementById("firstName-group").classList.add("has-error");
let helpBlock = document.createElement('div');
helpBlock.classList.add('help-block');
helpBlock.innerHTML = data.errors.firstName;
document.getElementById("firstName-group").append(helpBlock);
}
推荐阅读
- javascript - 如何从字符串中解构默认值
- javascript - 如何优化搜索算法
- sql-server - 需要对存储过程中的临时表进行更新查询
- android - progressDIalog.setCancelable(false) 不工作,触摸关闭
- eclipse - 你好世界,带有德语变音符号和其他不寻常的字符 ä ö ü ß @  ♫ Ꞧ € ᴀ ꟽ ㍻
- sql - 数据库的请求限制为 30 并且已达到:该错误的请求计数的哪些状态?
- javascript - 如何在jquery中使用鼠标位置移动溢出的元素
- javascript - 具有不可拖动子图像的可拖动 div 上的 FireFox 问题
- css - Gantry 5 网格系统与 Bootstrap 4 相同
- postgresql - 什么是postgresql查询来查找没有时区的时间戳