确认框取消功能与OK相同

时间:2016-02-06 17:03:16

标签: javascript confirm

我希望有人告诉我为什么取消按钮会将我重定向到Youtube,而不是取消操作。

function link(){
    var r = confirm("Are you leaving?");
    if (r = true) {
        a.link("http://www.youtube.com");}
    else {
        return true;}   

}

<a href="http://www.youtube.com" onclick="link()">Youtube</a>

2 个答案:

答案 0 :(得分:2)

由于省略了一个等号,您可以在此r设置为true

if (r = true) {

只需将其更改为:

if (r == true) {

if (r === true) {

或只是

if (r) {

答案 1 :(得分:2)

function link(){
    var r = confirm("Are you leaving?");

    // if user clicks ok he'll be redirected to youtube
    // as "r" will be truthy

    if (r) { // this means user clicked ok
        return a.link("http://www.youtube.com");
    }
    else {
        return false; // and this means user clicked cancel so he'll not be redirected so this needs to be set to false
    }   

}

confirm将返回true或false,但在您的代码中,您将真实地归为r,因此它将无法正常工作。

正如我在上面的评论中所写,你需要将else语句中的return设置为false。

而不是使用a.link()我建议你使用window.location

function link(){
    
    var r = confirm("Are you leaving?");

    if(r){
        var redirect = window.location = "http://youtube.com";
        return redirect;
    }
    else{
        return false;
    }
        
}
<a href="http://youtube.com" onclick="return link()">click here to be redirected!</a>