我有一个站点,该站点在加载页面时显示模式窗口。但是,我希望仅向访问者第一次显示此内容。
我已设置JavaScript在页面加载时添加cookie,但我希望读取该cookie(如果存在)并隐藏模式(如果存在cookie)。
我有以下Javascript(没有jQuery):
<script language="JavaScript">
if (document.cookie.indexOf('visited=true') == -1) {
var oneyear = 1000*60*60*24*365;
var expires = new Date((new Date()).valueOf() + oneyear);
document.cookie = "visited=true;expires=" + expires.toUTCString();
}
//Check if cookie is present and hide myModal DIV
if (document.cookie.indexOf('visited=true') >= 0) {
document.getElementById('myModal').modal.style.display = "none";
}
</script>
我的HTML是:
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<div class="content">
<p>Text to be shown here</p>
<button id="closeBtn">Close</button>
</div>
</div>
</div>
正在页面加载时设置cookie,但在第二页面加载时未读取它并隐藏#myModal
**更新**
我已经按照以下答案更新了上面的代码,但现在控制台中出现错误:
Uncaught TypeError: Cannot read property 'style' of null
答案 0 :(得分:3)
修改此项。您正在检查字符串(visited=true=
)错误。根据我的说法,将其设置为visited=true
或visited=
是最好的选择
if (document.cookie.indexOf('visited=') >= 0) {
document.getElementById('myModal').modal.style.display = "none";
}
答案 1 :(得分:0)
您正在检查错误的字符串:
if (document.cookie.indexOf('visited=true=') >= 0) {
应该是
if (document.cookie.indexOf('visited=true') >= 0) {
答案 2 :(得分:0)
可能是.modal。需要删除?即改变
if (document.cookie.indexOf('visited=') >= 0) {
document.getElementById('myModal').modal.style.display = "none";
}
收件人:
if (document.cookie.indexOf('visited=') >= 0) {
document.getElementById('myModal').style.display = "none";
}