JavaScript:用户关闭横幅并不';未来30天不展示横幅
我有一个JavaScript脚本,可以在用户与横幅交互并使用X按钮关闭横幅后,在特定时间内隐藏横幅 当用户关闭此横幅时,横幅01可能会隐藏一天(24小时) 当用户关闭此横幅时,横幅02可能会隐藏30天 现在我的代码不能像我希望的那样工作,用户甚至不能关闭其中一个横幅 当我使用为Banner 01设计的部分Javascript并对其进行测试时,Banner 01工作良好,在用户关闭后显示,24小时后将再次显示此横幅 我需要这个确切的功能为旗帜02,但不是24小时,而是30天。这两个横幅可以在一个站点上协同工作 对于我如何使用这两个横幅以及我上面提到的每一个横幅的功能,有什么解决方案吗JavaScript:用户关闭横幅并不';未来30天不展示横幅,javascript,html,Javascript,Html,我有一个JavaScript脚本,可以在用户与横幅交互并使用X按钮关闭横幅后,在特定时间内隐藏横幅 当用户关闭此横幅时,横幅01可能会隐藏一天(24小时) 当用户关闭此横幅时,横幅02可能会隐藏30天 现在我的代码不能像我希望的那样工作,用户甚至不能关闭其中一个横幅 当我使用为Banner 01设计的部分Javascript并对其进行测试时,Banner 01工作良好,在用户关闭后显示,24小时后将再次显示此横幅 我需要这个确切的功能为旗帜02,但不是24小时,而是30天。这两个横幅可以在一个站
//Banner 01
const header=document.getElementById('mainheader')
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');
header.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');
header.classList.add('disabled');
})
//横幅02
const cookiesCloser=document.getElementById('cookiesCloser'))
const cookiesBanner=document.getElementById('cookiesBanner')
函数getCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i{
setTimeout(函数(){
cookiesBanner.classList.remove('disabled');
}, 30 * 24 * 60 * 60 * 1000)
var d=新日期();
d、 设置时间(d.getTime()+(30*24*60*60*1000));
var expires=“;expires=“+d.togmString();
document.cookie=“banner=1”+过期+“路径=/”;
cookiesBanner.classList.add('disabled');
})
#cookiesBanner{
背景:粉红色;
}
.公告横幅{
背景:橙色;
}
#cookiesBanner.disabled{
显示:无;
}
.announcement-banner.disabled{
显示:无;
}
Banner 01
X
横幅02
X
您的两个横幅具有相似的行为。它们之间唯一的区别是某种配置(cookie的名称、过期日期等)。这些配置可以作为HTML元素上的数据属性传递。例如:
...
在JavaScript文件中,您可以尝试查找页面上应该具有类似横幅行为的每个元素,并在其上循环。然后,为每个横幅读取由属性设置的配置,并侦听单击事件
与其决定是否应该隐藏横幅,不如尝试确定是否应该显示横幅。这样,横幅总是隐藏的,除非没有cookie
这种方法也具有很强的可扩展性。添加另一个具有自己名称和过期日期的banner元素只需要将另一个banner元素添加到HTML中
由于cookie的安全原因,下面的示例不会在堆栈代码段中运行,但您应该在本地环境中尝试此操作,并查看它的运行情况
函数getCookie(名称){
常量nameEQ=name+“=”;
const ca=document.cookie.split(“;”);
for(设i=0;i.ban