Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:点击开始cookie并隐藏元素24小时_Javascript_Html - Fatal编程技术网

JavaScript:点击开始cookie并隐藏元素24小时

JavaScript:点击开始cookie并隐藏元素24小时,javascript,html,Javascript,Html,我有JavaScript代码,在用户关闭某个元素后,该代码可能会将该元素隐藏24小时 现在我的脚本不能按我想要的那样工作,而且我甚至不能用X按钮关闭一个元素 在用户关闭元素24小时后,是否有任何选项可以隐藏该元素 我的代码: bannercloser.addEventListener('click',()=>{ 函数callcookie(名称、值、天数){ 如果(天){ var d=新日期(); d、 设置时间(d.getTime()+(天*24*60*60*1000)); var expir

我有JavaScript代码,在用户关闭某个元素后,该代码可能会将该元素隐藏24小时

现在我的脚本不能按我想要的那样工作,而且我甚至不能用X按钮关闭一个元素

在用户关闭元素24小时后,是否有任何选项可以隐藏该元素

我的代码:

bannercloser.addEventListener('click',()=>{
函数callcookie(名称、值、天数){
如果(天){
var d=新日期();
d、 设置时间(d.getTime()+(天*24*60*60*1000));
var expires=“;expires=“+d.togmString();
banner.classList.add('disabled');
}else var expires=“”;
document.cookie=name+“=”+value+expires+“path=/”;
banner.classList.remove('disabled');
}
})
.announcement-banner.disabled{
显示:无;
}

Užv Predaji
X

第一个函数
callcookie
未被调用。您需要调用
callcookie()

第二,我看不到你代码中的横幅声明

第三,我认为您需要在其中使用setTimeout,而不是cookie

这是我的代码,希望对你有用

const bannercloser=document.getElementById('bannercloser'))
const banner=document.getElementById('mainbanner')
函数getCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i{
setTimeout(函数(){
banner.classList.remove('disabled');
}, 1 * 24 * 60 * 60 * 1000)
var d=新日期();
d、 设置时间(d.getTime()+(1*24*60*60*1000));
var expires=“;expires=“+d.togmString();
document.cookie=“banner=1”+过期+“路径=/”;
banner.classList.add('disabled');
})
.announcement-banner.disabled{
显示:无;
}

Užv Predaji
X

cookie可以工作,但它可能不是最好的功能-HTTP cookie是为服务器和客户机之间的通信而设计的(作为服务器在客户机中存储信息的一种方式),但是您的用例似乎只与客户机有关。在这种情况下,可能是一种更好的使用机制——它允许客户端轻松地将信息存储在浏览器中,并在以后加载,而且比从JavaScript访问cookie要轻松得多

另外,您的示例代码显示了默认情况下如何始终隐藏横幅以及如何隐藏横幅,但它缺少关于在时间过去后再次显示横幅的部分。我会这样实施它:

bannercloser.addEventListener('click',()=>{
window.localStorage.setItem('banner-hidden',new Date().toISOString());
banner.classList.add('disabled');
});
功能下一天(d){
var out=新日期(d);
out.setDate(out.getDate()+1);
返回;
}
if(nextDay(window.localStorage.getItem('banner-hidden')| | 0).getTime()<
新日期().getTime()){
banner.classList.remove('disabled');
}
.announcement-banner.disabled{
显示:无;
}

Užv Predaji
X

可能是,此代码可以帮助您

var-timeTest=10;
函数setCookie(cname、cvalue、exdays){
var d=新日期();
//d.setTime(d.getTime()+(exdays*24*60*60*1000));=>24小时
d、 setTime(d.getTime()+(exdays*timeTest*1000));//测试
var expires=“expires=“+d.toutString();
document.cookie=cname+“=”+cvalue+”;“+expires+”;path=/”;
}
函数getCookie(cname){
变量名称=cname+“=”;
var decodedCookie=decodeURIComponent(document.cookie);
var ca=decodedCookie.split(“;”);
对于(var i=0;i{
如果(值>0){
时间倒计时(值-1);
}
console.log(值);
},1000)
}
document.getElementById(“bannercloser”).addEventListener('click',function(){
console.log(“单击”)
document.getElementById(“mainbanner”).classList.add(“禁用”);
//第一次点击
时间倒计时(timeTest);
setCookie('banner',true,1);
})
.announcement-banner.disabled{
显示:无;
}

Užv Predaji
X

我仍然无法关闭它。Cookie可能很好,但我无法关闭此横幅。哪里有问题?你要等一天才能解决。您可以更改时间1*24*60*60*1000=>3*1000,抱歉,但我需要在用户关闭元素后将其隐藏24小时。现在元素将在24小时后关闭,这很糟糕。对不起,我误解了你的问题。我编辑了它没有问题,但现在它仍然显示刷新后或当我们转到另一个子页面。有什么办法可以解决这个问题吗?在我转到另一个子页面或重新加载页面后,页面标题仍然存在。重新加载后或用户转到另一个子页面后,可能会出现横幅。我不确定我是否理解这个问题,但如果是关于如何访问
localStorage
,那么答案是,如果您在同一个域上,它将始终可用。因此,我可以将
禁止隐藏的
项存储在一个页面中,并在另一个页面中读取。如果您希望另一个页面具有不同的标志,则可以存储多个项目-根据页面URL或其他内容命名项目。