javascript - 为什么我的“addEventListen”按钮只能工作一次?
问题描述
我有三个函数,它们都包含contents.innerHTML = 'some HTML';
.
innerHTML
这些函数是在调用时用内容的 id重写div 的。
我在导航栏上也有三个按钮,它们在每个功能的顶部指定innerHTML
。当调用函数时,IE 按钮本身也与 HTML 的其余部分一起被重写。
这些按钮每个都有自己独立的 id,因此它们document.getElementById('button-id');
在 JS 文件中都有一个。
然后我使用以下事件来调用每个函数:
buttonName.addEventListener('click', () => {
functionCall();
});
我的问题是我的按钮只能工作一次。在我单击它们中的任何一个后,它们不再起作用。我觉得原因在盯着我看,但我就是看不到。
HTML:
<main>
<div id="content"></div>
</main>
JS:
const displayUser = () => {
content.innerHTML = `
<div class="nav-panel">
<a class="nav-div-l nav-pic-bg hover"><img class="nav-pic-l nav-img" src="${img.arrows[2]}" alt="Logout Arrow">
<h2 id="logout-btn">Back</h2></a>
<a id="user-btn" class="nav-div-c hover"><img class="nav-pic-c nav-img" src="${img.user[0]}" alt="User Picture">
<h2>Username</h2></a>
<a id="settings-btn" class="nav-div-r hover hide-mobile"><h2>Settings</h2>
<img class="nav-pic-r nav-img settings-img" src="${img.symbols[2]}" alt="Settings Cog"></a>
<a class="settings-btn hide-desktop"><img class="nav-img" src="${img.symbols[2]}" alt="Settings Cog"></a>
</div>
--- MORE NON NAV RELATED HTML ---
`;
};
就导航 HTML 而言,所有三个函数看起来都与 this 完全相同。
displayLists(); // load page with displayLists
const logoutBtn = document.getElementById('logout-btn'); // nav links
const userBtn = document.getElementById('user-btn');
const settingsBtn = document.getElementById('settings-btn');
logoutBtn.addEventListener('click', () => {
displayLists()
}); // change to lists page
userBtn.addEventListener('click', () => {
displayUser()
}); // change to user page
settingsBtn.addEventListener('click', () => {
displaySettings()
}); // change to settings page
解决方案
推荐阅读
- flask - plotly dash中的缓存或临时内存
- node.js - 如何修复 Heroku h12/503 超时错误
- python - 两个数据帧中点之间的距离
- javascript - 操作未渲染的 DOM 元素以在 Angular 中导出
- google-colaboratory - 如何在 Colab 中运行单行或部分代码?
- android - TabLayout 不显示文本
- python - 如何在 Kubernetes 中禁用 runasNonRoot
- python - 递归删除,但排除特定目录的树
- python - 从文本数据中提取单位(带或不带数字量)
- python-3.x - 如何在python中将QMimeType对象转换为字符串