我正在尝试将年龄验证弹出窗口添加到我的网站。它需要记住cookie,以便每次有人点击不同的页面时都不会询问。 cookie似乎工作正常,但重定向链接不起作用。当弹出窗口弹出并且您没有/取消时,它不会重定向到Google。它只是去页面。另外,“var answer = confirm('你是18岁还是以上?');” piece似乎没有给我一个Yes或No选项,只是一个Ok和Cancel。不确定我做错了什么。
<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>
答案 0 :(得分:0)
当弹出窗口弹出并且你没有/取消时它不会重定向到 谷歌。
变化:
if (answer = true) {...}
到此:
if (answer) {...}
您的原始代码正在分配(这是=
在Javascript中的作用),而不是比较。由于分配的结果始终为true
,因此您的if
语句将始终评估为真实,因此您永远不会点击else
子句。另外,既然你知道你有一个布尔值,你就可以if (answer)
就好了 - 不需要指定true
部分。
另外,“var answer = confirm('你是18岁还是以上?');”片 似乎没有给我一个是或否选项,只是一个好的和 取消。不确定我做错了什么。
confirm()
功能始终显示“确定”和“取消”。它不使用“是”和“否”。这不是一种选择。
答案 1 :(得分:0)
检查您的比较运算符。它应该是“==”而不是“=”。 即,
var answer = confirm('Are you 18 or older?');
if (answer == true) {
setCookie("ofAge","true",1);
} else {
window.location="http://www.google.com";
}
答案 2 :(得分:0)
您正在重定向到http://google.com
。由于安全问题,在JavaScript中,您只能真正处理自己的域。重定向到您网站上的网页
=
不是==
这是你问题的残余。您正在为true
分配答案,而不是读取它的值。使用if(answer == true)
或if(answer)
您无法更改confirm()
对话框(或任何对话框)上的按钮上的文字。我建议你做的是以下任何一个
解决方案2.0 :说“你必须年满18岁才能继续”。我们不是问“你是不是超过18岁?”,而是重新提出要由Ok
或Cancel
解决方案2.1 :询问他们的年龄,并进行比较:
var age = prompt("How old are you?")
if (age => 18) {...} else {...}
希望我能提供帮助!