javascript - onClick 在第一次点击时不起作用

标签 javascript html if-statement dom-events

我试图让 button 元素在“关注”和“取消关注”之间切换其文本,但为什么 Javascript 在第一次点击按钮时没有反应?

HTML:

<form method="post">
    <button class="follow" onclick="this.innerHTML = follow_test(this.innerHTML)">

        Follow

    </button>
</form>

JavaScript:

    function follow_test(string) {
        if (string === 'Follow') { return ('Unfollow'); } else { return('Follow'); }
    }

最佳答案

正如@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>

关于javascript - onClick 在第一次点击时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53980058/

相关文章:

javascript - JavaScript 在 bootstrap 中的用法是什么?

php - 导出 .CSV 文件,如果我使用列名称导出它,它会告诉我它是 SYLK 格式

javascript - 检查 null 的条件语句不起作用

javascript - 选择后更改表格 "action"

javascript - JS : Loop with multiple conditions

javascript - 在 if-else 条件下对 SVG 进行动画处理

javascript - 计算价格 JavaScript

javascript - For 循环内的 NodeJS 和 Mongoose 回调

javascript - 使用loopback.io创建一个新项目

javascript - 列表在元素放置上向下移动