首页 > 解决方案 > 为什么只有单击两次按钮才写入js cookie?

问题描述

我有一个按钮,一旦单击它就应该写入一个 cookie 并更改按钮的textContent

<button id="menu-icon" onclick="writeCookie()">volume_up</button>

但只有当我单击它两次时它才会写入 cookie。

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 *1000));
        var expires = "; expires=" + date.toGMTString();
    } else {
        var expires = "";
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}
function writeCookie(){
    let element = document.querySelector("#menu-icon")
    let state = element.textContent;
    switch(state) {
        case 'volume_off':
            element.textContent = 'volume_up'
            createCookie("default", "", -1)
            createCookie("default", true, 100)
            break;
        case 'volume_up':
            element.textContent = 'volume_off'
            createCookie("default", "", -1)
            createCookie("default", false, 100)
            break;
    }
}

我该如何解决?

标签: javascriptcookies

解决方案


从 html 中删除onclick="writeCookie()并在 js 文件中添加以下行。

document.document.getElementById("menu-icon").addEventListener("click", writeCookie);

您还应该检查控制台日志。


推荐阅读