javascript - 为什么只有单击两次按钮才写入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;
}
}
我该如何解决?
解决方案
从 html 中删除onclick="writeCookie()
并在 js 文件中添加以下行。
document.document.getElementById("menu-icon").addEventListener("click", writeCookie);
您还应该检查控制台日志。
推荐阅读
- c# - 使用“键”作为规则元素标签
- android - 如果传感器在启动前连接,FTDI 只能打开连接
- powerbi - 在 CALCULATETABLE 期间使用来自另一个表 (DAX) 的值进行过滤
- php - 仅当没有与之关联的参与者时才删除注册类型
- javascript - Vuejs 和 Firebase:无法访问 onSnapshot() 中的“this”
- python - Python while 循环未按预期执行
- android - 将按钮单击重定向到不可见元素(Google 登录)
- vba - 将系列趋势线方程获取到形状文本框
- python - pip install gitpython,pip search 返回一个堆栈跟踪。我认为 pip 需要更新,但出现 ssl 错误
- sqlite - Flutter Text("${sqlite_tbl[0]['body']") 抛出 NoSuchMethodError