I am trying to change button text and style when clicking on button. Code is working when changing Generate to Reset button however it doesn't work from reset to generate. It seems that code is working just in first click. How can I fix this?
// 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>
In if
statements, you need to have ==
instead of equals. So in your case it needs to be:
if ((generateBtn.innerHTML == "GENERATE")) {
This article explains it pretty well.
// 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>
// Change Generate Button to Reset# let generateBtn = document.getElementById("generateBtn"); generateBtn.addEventListener("click", () => { if ((generateBtn.innerHTML === "GENERATE")) { //=== instead of = 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>
try this..
you should use textContent
instead of innerHtml .. it will give you text
from html tag .. use includes
method to compare text ..
Search it on google : innertext
vs innerhtml
vs textcontent
..
let generateBtn = document.getElementById("generateBtn"); generateBtn.addEventListener("click", (e) => { if (e.target.textContent.includes("GENERATE")) { e.target.innerText = "RESET"; e.target.classList.add("resetBtn-shown"); } else { e.target.innerText = "GENERATE"; e.target.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>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.