排除if语句中的所有其他活动ID

时间:2017-09-19 13:56:29

标签: javascript if-statement redirect conditional

我正在编写一个简单的函数,其中if语句根据用户的选择重定向用户。基本上,用户会看到几个选项(A,B,C等)。当选择A和B时,用户将重定向到一个URL,当选择A和C时,用户将重定向到另一个URL。

到目前为止,这是有效的,使用以下代码:

function redirect() {
    if (((document.getElementById('A').classList.contains('active')) == true) && ((document.getElementById('B').classList.contains('active')) == true)) {
        window.location = "https://www.example.com";
    };
};

我的问题是我还希望能够排除所有其他可能性,这意味着如果选择了A和B,我想添加一个重定向用户的子句,但没有其他选项。有没有办法在没有明确列出所有其他选项('active')) == false

的情况下执行此操作

再次感谢你,如果这个问题反映了我对编码的基本知识,那就很抱歉。

3 个答案:

答案 0 :(得分:0)

可以存储所有活动值:

const ids = ["A","B","C","D","E"],state = {};
for(const id of ids)
   state[id] = document.getElementById(id).classList.contains('active');

然后:

if( state.A && state.B)

答案 1 :(得分:0)

列出具有active类的所有元素并循环遍历它们。

// Get a list of all elements having the "active" class
var activeElements = document.querySelectorAll(".active");
var redirect = true; 

// Loop through all the elements having the active class
// and set redirect to false if one of them doesn't have one of the following ID: 'A' or 'B'
for (var i =0; i<activeElements.length;i++) {
    if(activeElements[i].id != 'A' && activeElements[i].id != 'B') {
        redirect = false;
    }
} 

//If the redirect variable is still true
if(redirect){
    redirect();
}

在这种情况下,您的redirect()功能会使用Single Responsibility Principle

// url has a default value. So you can call the function these ways:
// redirect();   --> redirects to https://example.com
// redirect("https://stackoverflow.com"); --> redirects to StackOverflow.
function redirect(url = 'https://example.com') {
        window.location = url;
    };
};

答案 2 :(得分:0)

$("#my-link").click(....)