2017-02-09 8 views
0

Я изучаю JavaScript, и я вижу, что этот вопрос задавался много раз, но я не могу заставить это работать для меня. Что я хочу сделать, покажите загрузочный модальный раз в день.set cookie на странице, чтобы показать всплывающее окно bootstrap один раз в день

То, что я до сих пор:

function setCookie(cookiename, cookievalue, expdays) { 
    var d = new Date(); 
    d.setTime(d.getTime()+(expdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires=" + d.toGMTString(); 
    document.cookie = cookiename + "=" + cookievalue + "; " + expires; 
} 

function getCookie(cookiename) { 
    var name = cookiename + "="; 
    var ca = document.cookie.split(';'); 
    for(var i = 0; i < ca.length; i++) { 
    var c = ca[i].trim(); 
    if (c.indexOf(name) == 0) return c.substring(name.length, c.length); 
} 


//I want to check if there is a cookie. 
//if I have not set a cookie, I want to show my modal, 
//if there is a cookie then return; 
//The cookie should expire in one day. 
function checkCookie() { 
    var showed = getCookie("showed"); 
    if (showed != null && showed != "") { 
     var date = new Date(showed).getDate(); 
     var currentDate = new Date().getDate(); 

     if (currentDate > date) { 
      return true; 
     } 
     return false; 
    } 
    return true; 
} 

Теперь, если я изменить последнее возвращение истинного; вернуть false; мой модальный не появляется. Теперь я вижу модальный каждый раз. Что я делаю неправильно? Как я могу это исправить?

+0

Можете ли вы опубликовать способ, которым вы устанавливаете cookie? – misterwolf

+0

Я установил cookie в свою функцию setCookie – NewDev

+0

да, но что такое инструкция? , потому что я проверил ваш код и все выглядят хорошо. Я не думаю, что у вас проблема с датой! – misterwolf

ответ

0

function setCookie(cookiename, cookievalue, expdays) { 
 
    var d = new Date(); 
 
    d.setTime(d.getTime()+(expdays * 24 * 60 * 60 * 1000)); 
 
    var expires = "expires=" + d.toGMTString(); 
 
    document.cookie = cookiename + "=" + cookievalue + "; " + expires; 
 
} 
 

 
    function getCookie(cookiename) { 
 
    var name = cookiename + "="; 
 
    var startPos = document.cookie.indexOf(name); 
 
    if(startPos == -1) return null; 
 
    startPos+=(name.length); 
 
    if(document.cookie.indexOf(";",startPos) == -1){ 
 
    return document.cookie.substring(startPos,document.cookie.length); 
 
    } 
 
    else{ 
 
    return document.cookie.substring(startPos,document.cookie.indexOf(';',startPos)); 
 
    } 
 
return null; 
 
} 
 

 

 
//I want to check if there is a cookie. 
 
//if I have not set a cookie, I want to show my modal, 
 
//if there is a cookie then return; 
 
//The cookie should expire in one day. 
 
function checkCookie() { 
 
    var showed = getCookie("showed"); 
 
    if (showed != null && showed != "") { 
 
     var date = new Date(showed).getDate(); 
 
     var currentDate = new Date().getDate(); 
 

 
     if (currentDate > date) { 
 
      return true; 
 
     } 
 
     return false; 
 
    } 
 
    return true; 
 
}

Также при установке куки, использование

setCookie('showed',new Date().toGMTString(),1); 

, потому что мы используем значение куки, а не время, чтобы проверить куки истекает. Значит, значение должно быть datestring

+0

Отредактировано getCookie. Проверьте это сейчас –

+0

Я не думаю, что есть проблема с получением или настройкой файла cookie. Мне просто нужно проверить, есть ли файл cookie. – NewDev

 Смежные вопросы

  • Нет связанных вопросов^_^