javascript - 使用 insertAdjacentHTML 加载内容后,querySelectorAll 返回空 NodeList
问题描述
所以我现在搜索了5个小时,没有得到任何答案。
情况:我正在将数据库中的内容加载到我的 HTML 站点并使用 insertAdjacentHTML 将其插入。内容也正确显示,所有数据都在这里。单击之前插入的元素之一时,我想展开卡片。我的事件侦听器适用于我的测试 HTML 内容,但不适用于插入的内容。整个事情都不起作用,因为 .querySelectorAll 返回一个空的 NodeList。
我试图放置脚本,将内容加载到头部和将事件侦听器保存到最后的脚本,但没有任何变化。实际上,使用开发者工具观看时,内容在 HTML 文件中。
希望任何人都可以帮助我:D
这是模板:
let markup = `
<figure class="control__msg" id="${snapshot.key}">
<div class="control__msg--info">
<h4>${item.name}</h4>
<h5>${item.time}</h5>
</div>
<div class="control__msg--content" id="content_${snapshot.key}">
<h4>Email: ${item.email}</h4>
<h4>Tel.: ${item.phone}</h4>
<h4>Betreff: ${item.subject}</h4>
<p>
${item.message}
</p>
</div>
</figure>`;
document.getElementById('messages').insertAdjacentHTML('beforeend', markup);
这是事件监听器:
document.addEventListener('DOMContentLoaded', e => {
let targets = document.querySelectorAll('.control__msg');
targets.forEach(curr => {
curr.addEventListener('click', e => {
let content = document.getElementById(`content_${curr.id}`);
if (content.style.display === 'block') {
content.style.display = 'none';
} else {
content.style.display = 'block';
content.style.animation = 'dropIn .8s 0s forwards ease-out';
}
});
});
});
解决方案
推荐阅读
- c# - 无法从 'System.Collections.Generic.List 转换
' 到 'System.Xml.Linq.XName' - matplotlib - 使用 Matplotlib 的麦克斯韦颜色三角形
- python - python manager dict会自动锁定它的值吗?
- sql - 无法启动 SQL Server 服务
- html - 如何自定义 HTML/CSS 水平菜单?
- database - 使用更多测量值或仅使用标签来提高性能更好吗
- .net - docker 检查不显示应用程序的 IP 地址
- java - 为什么我无法调用重绘方法?
- c# - 在 C# 中使用内部类处理套接字
- timer - 在我的湿度传感器低于 60% 后,需要帮助在我的 arduino 上创建 5 分钟计时器