javascript - 使用 VanillaJS 类 obj 永久创建 DOM 元素?(.insertAdjacentElement)
问题描述
我创建了一个新的 H4 元素,可以按预期在 DOM 中呈现。但问题是,该元素不会永久呈现。
突然单击另一个图像(只有 2 个图像标签)然后将 H4 元素添加到下一个图像但删除另一个。我环顾四周,找不到相关的话题。
我感谢您的帮助。
class Player {
constructor() {
// Add elements and content for clicks.
this.addHeader = document.createElement("h4");
this.text = document.createTextNode('The number of times you have clicked:')
this.addHeader.appendChild(this.text);
console.log(this.addHeader);
// Obtain images from HTML.
this.images = document.querySelectorAll('.cat-image');
}
// Update when the image is clicked.
update() {
for (const image of this.images) {
let compareSrc = image.attributes.getNamedItem('src'),
ifcontainsH4 = Array.from(image.parentElement.childNodes).includes('h4');
image.addEventListener('click', (e) => {
(compareSrc === compareSrc) && !ifcontainsH4
? image.parentElement.insertBefore(this.addHeader, image.parentElement.children[1])
: console.log('Parent element contains a h4 tag.');
e.preventDefault();
})
}
}
}
// Instance of class Player.
const player = new Player();
// Loop for event listeners that are apart of a class.
(function loop() {
player.update();
})(this)
解决方案
this.addHeader 在 Player 构建时运行,每次点击都会引用它。因此,它只是将相同的 h4 元素移动到每个单击的图像。
如果您想在每次点击时添加一个新的 h4,那么每个点击处理程序都应该创建自己的 h4 元素。
推荐阅读
- c# - UWP 项目导航
- python - 在 Python 中使用 plotnine geom_smooth 手动更改趋势线的线型
- javascript - JavaScript算法:有没有办法用元素的绝对值对已经排序的数组进行排序
- excel - Excel VBA - Range(..).Select 在 Application.SendKeys 之后不起作用
- python - Sqlalchemy ProgrammingError 异常:未知列
- android - 当 Activity Destroy by OS 时,运行时权限弹出仍然存在
- asp.net - Asp net core and SPA (VUE):SPA 默认页面中间件无法返回默认页面'/index.html'
- windows - 将密码从 WSL2 传递到 Powershell.exe
- javascript - 如何聚合二维数组 Promise?
- python - 在 Python 中使用“请求”库向受 CloudFlare 保护的站点发送请求返回错误 1020“请启用 cookie”