2012-03-28 8 views
0

Ich habe einen Javascript-Cookie, der einen Standardwert von NYY (nein, ja, ja) setzt, wenn ein Benutzer die Website betritt. Grundsätzlich muss ich diesen Standardwert ändern können, wenn ein Benutzer aus einer Liste von 3 Auswahlmöglichkeiten (Radio oder Checkbox) von einer anderen Seite auswählt und sich an seine Einstellungen erinnert.Javascript Cookie zum Speichern von Radio Button Arrays

Hier ist mein Code

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

Newpage: wo ich den Standardwert des Cookies ändern möchten

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

Functional Ja Nein

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> 

Antwort

0

Nun, das wird funktionieren, aber ich werde es nicht so machen, aber mit Blick auf den Code und die formulierte Frage ist dies die beste Antwort.

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

Es gibt einige schreckliche Fehler im Code leider direkt sein, aber wenn Sie so weitermachen, es wird hart sein, größere Funktion zu schreiben.

  1. Der HTML-Code ist ungültig: Eine ID ist ein eindeutiger Bezeichner. Dies bedeutet, dass nur 1 Element die gleiche ID haben kann.
  2. Verwenden Sie die geschweifte Klammer, wo sie
  3. verwenden var gehen sollte Ihre Variable
  4. Die Split-Funktion ein Array zurück, warum erklärt ein neues Array auf die Variable vor dem Split

    pCOOKIES = new Array zu deklarieren();

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