2016-07-26 8 views
0

Ich versuche, ein Popup für die Altersbestätigung meiner Website hinzuzufügen. Es muss sich Cookies merken, damit es nicht jedes Mal fragt, wenn jemand auf eine andere Seite klickt. Die Cookies scheinen zu funktionieren, aber der Redirect-Link funktioniert nicht. Wenn das Popup auftaucht und Sie auf Nein drücken, wird es nicht an Google weitergeleitet. Es geht nur auf die Seite. Auch die "var answer = confirm ('Bist du 18 oder älter?');" Stück scheint mir nicht eine Ja oder Nein Option, nur ein OK und Abbrechen. Nicht sicher, was ich falsch mache.Javascript Redirect funktioniert nicht

<script type="text/javascript"> 
function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires=" + d.toGMTString(); 
    document.cookie = cname + "=" + cvalue + "; " + expires; 
} 

function getCookie(cname) { 
    var name = cname + "="; 
    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); 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
} 

var ofAge = getCookie("ofAge"); 
if (ofAge != "true") { 
    var answer = confirm('Are you 18 or older?'); 
    if (answer = true) { 
     setCookie("ofAge", "true", 1); 
    } else { 
     window.location = "http://www.google.com"; 
    } 
} 
</script> 
+1

' Antwort = true '<--- Zuweisung vs Vergleich – zerkms

+0

Es gibt keine Möglichkeit, die eingebaute Funktion' confirm() 'mit den Schaltflächen" Ja "/" Nein "zu verwenden, sie verwendet immer" OK "/" Abbrechen ". – nnnnnn

Antwort

0

Wenn das Popup erscheint und Sie treffen keine/cancel es nicht zu Google nicht umleiten.

Wechsel:

if (answer = true) {...} 

dazu:

if (answer) {...} 

Ihr Original-Code Zuordnung wurde (das ist, was = tut in Javascript), nicht zu vergleichen. Da das Ergebnis der Zuweisung immer true ist, würde Ihre if-Anweisung immer zu truthy ausgewertet und Sie würden daher nie die else-Klausel treffen. Da Sie wissen, dass Sie einen booleschen Wert haben, können Sie auch einfach if (answer) tun, ohne den true Teil angeben zu müssen.


Auch die "var answer = confirm ('Sind Sie 18 Jahre oder älter?');" Stück scheint nicht geben mir eine Ja oder Nein-Option, nur ein Ok und Abbrechen. Nicht sicher, was ich falsch mache.

Die Funktion confirm() zeigt immer "OK" und "Abbrechen" an. Es verwendet nicht "Ja" und "Nein". Das ist keine Option.

0

Überprüfen Sie Ihren Vergleichsoperator. Es sollte "==" nicht "=" sein. dh

var answer = confirm('Are you 18 or older?'); 
if (answer == true) { 
setCookie("ofAge","true",1); 
} else { 
    window.location="http://www.google.com"; 
} 
0

Problem # 0: Kreuz Herkunft

Sie zu http://google.com umleiten. Aus Sicherheitsgründen können Sie in JavaScript nur mit Ihrer eigenen Domain umgehen. Umleiten zu einer Seite auf Ihrer Website

Problem # 1: = ist nicht ==

Dies ist die cruft des Problems ist. Sie weisen true eine Antwort zu und lesen den Wert nicht. Verwenden Sie if(answer == true) oder nur if(answer)

Problem # 2: Bestätigen

Sie können den Text auf Schaltflächen auf dem confirm() Dialog ändern (oder einen Dialog für diese Angelegenheit). Was ich vorschlagen würde Sie tun, ist eine der folgenden

Lösung 2.0: Sagen Sie "Sie müssen 18 oder älter sein, um fortzufahren". Anstatt zu fragen: "Bist du über 18?“Umformulieren wir die Frage nach einem Ok oder Cancel

Lösung 2.1 beantwortet werden: Bitten Sie sie, ihr Alter und vergleichen:

var age = prompt("How old are you?") 
if (age => 18) {...} else {...} 

Hoffe, dass ich nützlich sein könnte