在javascript中替代if,else if,else if,else if等

K G*_*oll 2 javascript if-statement switch-statement

我有以下代码,这取决于url参数更改,然后隐藏表单上的选择选项.即www.example.com?type=images

最终将有超过20个不同的参数.我想知道一个更好的方法,而不是拥有大量的elses.只是概述了如何做到这一点很好,我是新手,所以我希望能够得到答案并从中学习.谢谢.

var type = getURLparameter('type'); //from another function

if (type == "images"){
    var selectDiv =('divid');
    var selectField = ('selectid');
    document.getElementById(selectField).options[1].selected=true;
    document.getElementById(selectDiv).style.visibility="hidden";
}
else if (type == "pizza") {
    var selectDiv =('divid');
    var selectField = ('selectid');
    document.getElementById(selectField).options[2].selected=true;
    document.getElementById(selectDiv).style.visibility="hidden";
}
else (type == "cheese") {
    var selectDiv =('divid');
    var selectField = ('selectid');
    document.getElementById(selectField).options[3].selected=true;
    document.getElementById(selectDiv).style.visibility="hidden";
}
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 10

为了不重复代码,我会用这样的代码写一个索引号的查找表,并且没有为每个选项重复代码:

var typeNum = {
    images: 1,
    pizza: 2,
    cheese: 3
};

var type = getURLparameter('type');

if (type in typeNum) {
    document.getElementById('selectid').options[typeNum[type]].selected = true;
    document.getElementById('divid').style.visibility = "hidden";
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*guy 6

使用开关:

var selectDiv   = document.getElementById('divid'), 
    selectField = document.getElementById('selectid');

switch(type){
    case "images":
        selectField.options[1].selected=true;
        selectDiv.style.visibility="hidden";
    break;

    case "pizza":
        selectField.options[2].selected=true;
        selectDiv.style.visibility="hidden";
    break;

    case "cheese":
        selectField.options[3].selected=true;
        selectDiv.style.visibility="hidden";
    break;
}
Run Code Online (Sandbox Code Playgroud)