2016-07-26 16 views
0

私のウェブサイトに年齢確認のポップアップを追加しようとしています。誰かが別のページをクリックするたびに尋ねないように、クッキーを覚えておく必要があります。 Cookieは正常に動作しているようですが、リダイレクトリンクは機能しません。ポップアップがポップアップし、あなたがno/cancelを押すとG​​oogleにリダイレクトされません。それはちょうどページに行きます。また、「var answer = confirm(18歳以上ですか?」)私は「はい」または「いいえ」オプションを与えていないようで、「OK」と「キャンセル」だけです。私が間違っていることを確認していない。javascriptのリダイレクトが機能しません

<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

'答え= true '<---代入と比較。 – zerkms

+0

ビルトインの' confirm() '関数に" Yes "/" No "ボタンを使う方法はありません。常に" OK "/" Cancel "を使います。 – nnnnnn

答えて

0

ポップアップがポップアップし、あなたはそれが Googleにリダイレクトされません何/キャンセルにヒットしない場合。

変更:これに

if (answer = true) {...} 

if (answer) {...} 

あなたの元のコードは、(それが=はJavascriptで何をするかだ)を割り当てると比較されませんでした。代入の結果は常にtrueなので、ifの文は常にtruthyと評価されるため、else節は決してヒットしません。さらに、ブール値を持っていることを知っているので、if (answer)だけでも問題ありません。true部分を指定する必要はありません。


また、 "=確認するvar答えが( 'あなたは18歳以上はありますか?');"ピース は、私に[はい]または[いいえ]オプションを与えていないようです。ちょうどOkと のキャンセルです。私が間違っていることを確認していない。

confirm()機能には常に「OK」と「キャンセル」が表示されます。 「はい」と「いいえ」は使用されません。それはオプションではありません。

0

比較演算子を確認してください。それは "=="ではなく "="でなければなりません。 すなわち、

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

問題#0:クロスオリジン

あなたはhttp://google.comにリダイレクトしています。セキュリティ上の問題があるため、JavaScriptでは自分のドメインにしか対応できません。ウェブサイト上のページにリダイレクト

問題#1:=これはあなたの問題の嫌なものです==

ではありません。回答をtrueに割り当てていますが、値を読み取っていません。 if(answer == true)またはちょうどif(answer)

問題#2を使用してください:あなたはconfirm()ダイアログ(またはそのことについては、ダイアログ)のボタン上のテキストを変更することはできません

を確認してください。私がお勧めするものは、次のいずれかです。

解決策02 :「続けるには18歳以上でなければなりません」と言ってください。 「18歳以上ですか?」、我々はOkまたはCancel

ソリューションで回答する質問を言い換え2.1:それらに彼らの年齢を依頼し、比較します!

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

希望は私が役に立つことができ

関連する問題