2016-03-13 6 views
-1

Здесь, в основном, я хочу, чтобы клиент показывал div только один раз в 30 дней. Если cookie не присутствует, div будет отображаться, и при нажатии div будет делать что-то, не имеющее значения здесь, а затем будет хранить некоторые файлы cookie (например, IP-адрес клиента). Если файлы cookie присутствуют, хотя div исчезнет. Я написал здесь код, проверьте, можете ли вы, и помогите мне решить проблему.JS - Скрыть div, если существует файл cookie

<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> 

Как бы установить слушателя здесь, для «всплывающих окон»?

BTW, первый скрипт - это что-то действительно классное, что я нашел для возвращения клиентов IP через JS.

+0

Что такое "всплывающее окно"? –

+0

Это div, не имеющий значения здесь. @MitchKarajohn –

+0

@BillHicks, Не совсем! 'getElementsByClassName' возвращает нодлист ...' array-like' Элементы, которые не имеют в нем свойства 'style' ... – Rayon

ответ

0

Для этого вам действительно не нужен слушатель. Просто покажите popup как none по умолчанию, и положите код с вашего вопроса, в конце <body>.

Или нагрузка на DOMContentLoaded.

Кроме того, как отмечено в комментарии, вам нужно будет изменить getElementsByClassName на что-то еще, потому что прямо сейчас el не один элемент, а набор элементов. См documentation

Если вы знаете, что есть только один popup элемент, который вы могли бы сделать document.querySelector('.popup');

1

Делайте это с JQuery;)

Установите печенье с $.cookie("cookietitle", "cookievalue"); и посмотреть, если он установлен, и, чтобы скрыть элемент, сделать это:

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

Ему действительно не нужно что-то делать с помощью jQuery, правда? –

+0

Нет, но это зависит от его проекта. Если он уже использует jQuery, почему бы не использовать его? :) –

+0

@ AleksandarSpasojević Я нашел решение, проверить свой ответ и поблагодарить вас. :) –

0

OK, после некоторого мозгового штурма, я понял, что мне нужно изменить DIV от класса к идентификатору, так как это было бы легче иметь дело, а вот остальное:

<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> 
Смежные вопросы