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

compare a select option value and a value from URL

本文关键字:URL 选项 比较 选择      更新时间:2023-09-26

我有一个选择标签来选择类别,每个选项都包含类别编号作为值。类别号在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做这件事更容易,我会很高兴学习的。

thanx。

问题是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/