在页面加载时设置Cookie,如果存在Cookie,则隐藏div

时间:2018-07-27 11:50:37

标签: javascript html cookies

我有一个站点,该站点在加载页面时显示模式窗口。但是,我希望仅向访问者第一次显示此内容。

我已设置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

3 个答案:

答案 0 :(得分:3)

修改此项。您正在检查字符串(visited=true=)错误。根据我的说法,将其设置为visited=truevisited=是最好的选择

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";
}