javascript重定向不起作用

时间:2016-07-26 02:49:35

标签: javascript redirect cookies

我正在尝试将年龄验证弹出窗口添加到我的网站。它需要记住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>

3 个答案:

答案 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)

问题#0:交叉原点

您正在重定向到http://google.com。由于安全问题,在JavaScript中,您只能真正处理自己的域。重定向到您网站上的网页

问题#1:=不是==

这是你问题的残余。您正在为true分配答案,而不是读取它的值。使用if(answer == true)if(answer)

问题#2:确认

您无法更改confirm()对话框(或任何对话框)上的按钮上的文字。我建议你做的是以下任何一个

解决方案2.0 :说“你必须年满18岁才能继续”。我们不是问“你是不是超过18岁?”,而是重新提出要由OkCancel

回答的问题。

解决方案2.1 :询问他们的年龄,并进行比较:

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

希望我能提供帮助!