JS - 如果cookie存在则隐藏div

时间:2016-03-13 16:15:14

标签: javascript html dom cookies

在这里,基本上,我想让客户在30天内只展示一次div。如果没有cookie,则会显示div,并且当单击时,div将执行某些操作,此处不相关,然后它将存储一些cookie(例如客户端IP)。如果饼干存在,虽然div会消失。我在这里写了一些代码,如果可以,请查看它,并帮助我解决问题。

<script type="text/javascript" src="http://l2.io/ip.js?var=myip"></script>
<script>
        var el = document.getElementsByClassName('popup');

if(!document.cookie) {
    el.style.display = 'block';
    setCookie("clientip", myip, 30);
} else {
    el.style.display = 'none';
}

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;
}
</script>

我如何设置一个监听器,用于“弹出窗口”?

顺便说一句,第一个脚本是我发现通过JS返回客户端IP的非常酷的东西。

3 个答案:

答案 0 :(得分:1)

使用jQuery执行;)

使用$.cookie("cookietitle", "cookievalue");设置您的Cookie并查看它是否已设置并隐藏元素,请执行以下操作:

$(document).ready(function() {
     var CookieGet = $.cookie('yourcookie');
     if (CookieGet != null) {
          // Hide the element here.
          $('.yourelement').hide();
     }
 });

答案 1 :(得分:0)

你真的不需要听众。默认情况下,只需将#include <stdio.h> #include <string.h> void quickSortMain(char items[][20], int count); void quickSort(char items[][20], int left, int right); int main(void) { int i=0, n=0; char str[2000][20]; memset(str, 0 , sizeof(str[0][0])*20*1000); FILE *fil; fil=fopen("text.txt","r"); if (fil!=NULL) { while (!feof(fil)) { fgets(str[i], 20, fil); i++; } fclose(fil); } else { printf("can not open"); scanf("\n"); } fil=fopen("text.txt","w"); if (fil!=NULL) { fclose(fil); } else { printf("can not open"); scanf("\n"); } quickSortMain(str, i); fil=fopen("text.txt","a"); if (fil!=NULL) { while(n<i) { fprintf(fil,"%s", str[n]); n++; } fclose(fil); } else { printf("can not open"); scanf("\n"); } return 0; } void quickSortMain(char items[][20], int count) { quickSort(items, 0, count-1); } void quickSort(char items[][20], int left, int right) { int i=left; int j=right; char *x=items[(left+right)/2]; char temp[right+1]; while(i <= j) { while((strcmp(items[i],x) < 0) && (i < right)) { i++; } while((strcmp(items[j],x) > 0) && (j > left)) { j--; } if(i <= j) { strcpy(temp, items[i]); strcpy(items[i], items[j]); strcpy(items[j], temp); i++; j--; } } if(left < j) { quickSort(items, left, j); } if(i < right) { quickSort(items, i, right); } } 元素显示为popup,然后在none的末尾添加问题中的代码。

或者加载DOMContentLoaded

另外,是的,正如评论中所述,您必须将<body>更改为其他内容,因为现在getElementsByClassName不是一个元素,而是一个元素集合。请参阅documentation

如果您知道只有一个el元素,则可以执行popup

答案 2 :(得分:0)

好的,经过一些头脑风暴,我意识到我需要将我的div从课堂改为id,因为它会更容易处理,其余部分就是这样:

<script type="text/javascript" src="http://l2.io/ip.js?var=myip"></script>
<script>
    var el = document.getElementById('popup');
    el.addEventListener('click', showhide);

    if(!document.cookie) {
        console.log("No cookie");
        setCookie("clientip", myip, 30);
        function showhide() {
            el.style.display = 'none';
            console.log("Cookie is stored");
        }
    } else {
        el.style.display = 'none';
        console.log("We have your cookies");
    }

    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;
    }
</script>