确认框取消功能与确定执行相同的操作

Confirm box cancel function does the same thing as OK

本文关键字:执行 操作 取消 功能 确认      更新时间:2023-09-26

我希望有人告诉我为什么取消按钮将我重定向到 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>

因为省略一个等号,您将r设置为此处true

if (r = true) {

只需将其更改为:

if (r == true) {

if (r === true) {

或者只是为了

if (r) {
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,但在您的代码中,您将 true 分配给 r因此它永远不会起作用。

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

例如,我建议您使用window.location而不是使用a.link()

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>