Как указала @Slaks, причина была в том, что в тексте вашей кнопки было пустое пространство, из-за чего вместо этого выполнялся оператор else, поскольку " string "
не строго равен (===)"string"
.
Вы можете просто использовать свойство innerText , которое игнорирует пробел вместо свойства innerHTML , например:
/* JavaScript */
var btn = document.querySelector("button");
function follow_test(string) {
let text = string.target;
if (text.innerText === "Follow") {
text.innerText = "Unfollow";
} else {
text.innerText = "Follow";
}
}
btn.addEventListener("click", follow_test);
<!-- HTML -->
<form method="post">
<button type="button" class="follow"> // added 'type="button"' to prevent page reload for example's sake
Follow
</button>
</form>
Или если вы предпочитаете придерживаться свойства innerHTML или хотите использовать textContent свойство, вместо этого вы можете просто использовать метод trim () в строке кнопки, чтобы удалить все пробелы до и после строки, например:
/* JavaScript */
var btn = document.querySelector("button");
function follow_test(string) {
let text = string.target;
if ((text.innerHTML).trim() === "Follow") {
text.innerHTML = "Unfollow";
} else {
text.innerHTML = "Follow";
}
}
btn.addEventListener("click", follow_test);
<!-- HTML -->
<form method="post">
<button type="button" class="follow"> // added 'type="button"' to prevent page reload for example's sake
Follow
</button>
</form>