Javascript cookie для хранения массивов радиокнопок - PullRequest
0 голосов
/ 28 марта 2012

У меня есть файл cookie javascript, который устанавливает значение по умолчанию NYY (нет, да, да), когда пользователь заходит на сайт. В основном мне нужно иметь возможность изменить это значение по умолчанию, когда пользователь выбирает из списка 3 вариантов (радио или флажок) на другой странице и запоминает его настройки.

Вот мой код

<script type="text/javascript">

function createCookie(name,value,days) {
if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();

}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}

return null;
}

function printCookies(w){
cStr = "";
pCOOKIES = new Array();
pCOOKIES = document.cookie.split('; ');
for(bb = 0; bb < pCOOKIES.length; bb++){
    NmeVal  = new Array();
    NmeVal  = pCOOKIES[bb].split('=');
    if(NmeVal[0]){
        cStr += NmeVal[0] + '=' + unescape(NmeVal[1]) + '; ';
    }
}
return cStr;
}


function eraseCookie(name) {
createCookie(name,"",-1);
}

function setTheDivStyle() {
if(!readCookie('preference')) {
// if cookie not found display the div and create the cookie
document.getElementById("prefBanner").style.display="block";
/*document.getElementById("prefBanner").style.display="block";*/
createCookie('preference', 'NYY', 365);  // 365 day
}
else {
// if cookie found hide the div
document.getElementById("prefBanner").style.display="none";
}
}

// print all cookies set for the domain
allCookies = printCookies();
//document.write(allCookies);
alert(allCookies);
</script>



<body onload="setTheDivStyle();" onclick="setTheDivStyle();">
<div id = "prefBanner" class="prefCookie_banner">cookie policy banner - which the users sees if no cookie is set - to change your cookie preference <a href="newpage">click here</a></div>

Новая страница: где я хочу изменить значение cookie по умолчанию

<FORM NAME="profileForm">
Performance
<input type="radio" value="Y" id="performance" name="performance"><label     for="performance"> Yes</label>
<input type="radio" value="N" id="performance" name="performance"><label   for="performance"> No</label><br />

Функциональное да №

Tracking
<input type="radio" value="Y" id="tracking" name="tracking"><label for="tracking"> Yes</label>
   <input type="radio" value="N" id="tracking" name="tracking"><label for="tracking">     No</label><br />

<input type="submit" >


</FORM>

1 Ответ

0 голосов
/ 28 марта 2012

Ну, это будет работать, но я не буду делать это таким образом, но, глядя на код и сформулированный вопрос, это лучший ответ.

<input type="radio" value="Y" id="trackingY" name="tracking" onclick="createCookie('preference', 'Y', 365);">

<input type="radio" value="N" id="trackingN" name="tracking" onclick="createCookie('preference', 'N', 365);">

В вашем коде есть какая-то ужасная ошибка, извините за прямую, но если вы продолжите в том же духе, будет сложно написать большую функцию.

  1. HTML-код недействителен: идентификатор является уникальным идентификатором, это означает, что только 1 элемент может иметь одинаковый идентификатор.
  2. Используйте фигурные скобки, куда они должны идти
  3. используйте var для объявления вашей переменной
  4. Функция split возвращает массив, зачем объявлять новый массив в переменнойдо разделения

    pCOOKIES = new Array ();

    pCOOKIES = document.cookie.split (';');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...