javascript - 多次单击按钮时如何更改inner.HTML
问题描述
单击按钮时,我正在尝试更改按钮文本和样式。将“生成”按钮更改为“重置”按钮时代码有效,但从“重置”到“生成”无效。似乎代码只是在第一次点击时才起作用。我怎样才能解决这个问题?
// Change Generate Button to Reset#
let generateBtn = document.getElementById("generateBtn");
generateBtn.addEventListener("click", () => {
if ((generateBtn.innerHTML = "GENERATE")) {
generateBtn.innerHTML = "RESET";
generateBtn.classList.add("resetBtn-shown");
} else {
generateBtn.innerHTML = "GENERATE";
generateBtn.classList.remove("resetBtn-shown");
}
});
.generateBtn-shown {
background-color: red;
color: #eba341;
font-size: 1.5rem;
font-weight: 500;
border-radius: 0.5rem;
width: 10rem;
height: 3rem;
border: none;
}
.resetBtn-shown {
background-color: #21b884;
color: white;
}
<button id="generateBtn" class="generateBtn-shown">GENERATE</button>
解决方案
在if
语句中,您需要有==
而不是等于。所以在你的情况下,它需要是:
if ((generateBtn.innerHTML == "GENERATE")) {
这篇文章很好地解释了它。
// Change Generate Button to Reset#
let generateBtn = document.getElementById("generateBtn");
generateBtn.addEventListener("click", () => {
if ((generateBtn.innerHTML == "GENERATE")) {
generateBtn.innerHTML = "RESET";
generateBtn.classList.add("resetBtn-shown");
} else {
generateBtn.innerHTML = "GENERATE";
generateBtn.classList.remove("resetBtn-shown");
}
});
.generateBtn-shown {
background-color: red;
color: #eba341;
font-size: 1.5rem;
font-weight: 500;
border-radius: 0.5rem;
width: 10rem;
height: 3rem;
border: none;
}
.resetBtn-shown {
background-color: #21b884;
color: white;
}
<button id="generateBtn" class="generateBtn-shown">GENERATE</button>
推荐阅读
- ios - 将 UIViews 连接到 json 响应,反之亦然
- azure-active-directory - Microsoft Graph:尝试获取邮箱设置时收到 400 错误请求
- java - 主要或完整 GC 是否会从老一代中删除活动对象?
- python - 如何在python中覆盖具有多个校准相机的同一场景的两个实时图像
- vue.js - Nuxt.js 导入 lodash
- visual-studio - 缺少 NuGet 包详细信息窗口
- elasticsearch - 在 Elasticsearch 中将“long”数据类型转换为字符串/文本
- php - Laravel 8 在关联表的使用中拉取数据有很多问题
- python - Python 给了我很多回溯的东西是怎么回事
- python - 使用迭代时在 tkinter textarea 小部件中设置多种字体