javascript - How to hide element with jquery depends on cookie value?
问题描述
Firstly, I need set cookie cookiesshow to value true, after button click I need ask if cookiesshow is true and if it is hide element and then set value of cookiesshow to false but it doesn't work.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
if (getCookie("cookiesshow") != false)
{
document.cookie = "cookiesshow=true";
}
else
{
$("#cookiebar").hide();
}
$("#cookiebutton").click(function(){
var cookie = getCookie("cookiesshow");
console.log(cookie);
if (cookie == "true") {
$("#cookiebar").hide(1000);
document.cookie = "cookiesshow=false";
}
})
});
</script>
<div class="cookiebar" id="cookiebar"><span>This web using cookies. If you disagree with using cookies, please leave this page. </span><button class="cookiebutton" id="cookiebutton">Accept cookies</button></div>
解决方案
设置 cookie 时,所有 cookie 都将保存为字符串。
$(document).ready(function(){
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
if (getCookie("cookiesshow") !== "false")
{
setCookie("cookiesshow",true,3650);
//document.cookie = "cookiesshow=true";
}
$("#cookiebutton").click(function(){
var cookie = getCookie("cookiesshow");
console.log(cookie);
if (cookie === "true") {
$("#cookiebar").hide(1000);
setCookie("cookiesshow",false,3650);
//document.cookie = "cookiesshow=false";
}
})
});
推荐阅读
- r - 已解决 - Rcpp 在 MacOS Big Sur 上的 Vector.h 中返回错误
- python - Tkinter askdirectory()未显示在屏幕上
- php - MySQL全文搜索 - 多个搜索相同的字段
- r - 用随机行的值替换数据框中的特定值
- javascript - 谷歌翻译元素获取当前语言
- c# - 为什么它计算一些数字正确而一些数字错误?C#
- css - 每行的最后一个元素在悬停时将下一行的第一个元素推向右侧
- python - Python 发布请求使用请求库引发 400 'Bad Request' 错误,但适用于 cURL
- sql - 如何使 OR 函数只显示一个结果
- macos - MacOS + Visual Studio Code:通过路径将文件夹添加到工作区