比较选择选项值和URL中的值

时间:2015-06-28 07:57:10

标签: javascript

我有一个select标签来选择类别,每个选项都包含类别编号作为值。 类别编号位于URL字符串中。 我试图编写一个JS来检查选项值是否与URL中的类别编号相同,如果是,则选择该选项。到目前为止脚本不能正常工作。 我做错了什么?

这是代码:

function GetUrlValue(VarSearch){
    var SearchString = window.location.search.substring(1);
    var VariableArray = SearchString.split('&');
    for(var i = 0; i < VariableArray.length; i++){
        var KeyValuePair = VariableArray[i].split('=');
        if(KeyValuePair[0] === VarSearch){
            return KeyValuePair[1];
        }
    }
}
function compareValue(){
    var x = document.getElementById("selectcategory").length;
    for (var i = 0; i < x; i++){
        var categNo = document.getElementById("selectcategory").options[i];
        var UrlValue1 = GetUrlValue('icid');
        if (categNo === UrlValue) {
            document.getElementById("selectcategory").options[i].selected = true;
        }
        alert(UrlValue1);
    }
}

如果需要,我会发送一个工作链接。 如果用jquery做这件事比较容易,我会很乐意学习。

感谢名单。

1 个答案:

答案 0 :(得分:1)

问题是categNo应该是相应选项标记的值。此外,在循环中缓存select元素而不是重新查询DOM也是更好的选择:

function compareValue() {

    var select = document.getElementById("selectcategory");
    var x = select.options.length;

    for (var i = 0; i < x; i++) {
        var categNo = document.getElementById("selectcategory").options[i].value;
        var UrlValue = GetUrlValue('icid');
        if (categNo === UrlValue) {
            select.options[i].selected = true;
        }
    }
}

演示: http://jsfiddle.net/dj7c6sdL/