2015-06-28 3 views
0

У меня есть тег select для выбора категорий, каждый из которых содержит номер категории как значение. Номер категории находится в строке URL. Я пытаюсь написать JS, чтобы проверить, совпадает ли значение параметра с номером категории в URL-адресе, и если да, сделайте выбор. до сих пор скрипт dosnot работает. Что я делаю неправильно?сравнить значение параметра выбора и значение из 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 проще, я буду happey, чтобы учиться.

thanx.

+1

'document.getElementById ("selectcategory") length' не имеет смысла. – dfsq

+0

Я не знаю, является ли это опечаткой, но вы объявляете переменную 'var UrlValue1 = ...', но тогда вы сравниваете 'categNo === UrlValue' ... нет **' 1' ** в конце имени переменной. –

ответ

1

Проблема в том, что значение categNo должно быть значением соответствующего тега опции. Кроме того, это лучше кэшировать выберите элемент, а не повторный запрос 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; 
     } 
    } 
} 

Demo:.http://jsfiddle.net/dj7c6sdL/

+0

Спасибо, что сильно изменились. – tartash

+0

Ваш ответ был действительно полезен – tartash

Смежные вопросы