2014-07-02 3 views
0

Я пытаюсь пройти список выбора с 200 + элементами и нажимать на каждый. Когда элемент нажимается на него, выполняется функция selectCountry(), которая добавляет строку в таблицу. Я хочу, чтобы он создал таблицу с каждой выбранной опцией. Интересующая страница: http://www.world-statistics.org/result.php?code=ST.INT.ARVL?name=International%20tourism,%20number%20of%20arrivals.Javascript - Loop через параметры выбора, нажимая каждый

До сих пор у меня есть следующие, но это не похоже на работу:

var sel = document.getElementById('selcountry'); 
var opts = sel.options;  
for(var opt, j = 0; opt = opts[j]; j++) {selectCountry(opt.value)} 

Я пытаюсь сделать это в консоли в Chrome.

+1

Я действительно надеюсь, что это для тестового кода или что-то подобное, и вы не строите продукт/инструмент на этом ... – Codeman

+0

Пожалуйста уточюните просто что это не работает. Также будет полезно использовать jsfiddle. –

ответ

1

Одной из наиболее полезных функций инструментов dev является то, что при написании имени функции вы возвращаете исходный код. Вот исходный код функции selectCountry:

function selectCountry(select) { 
     if (select.value == "000") return; 
     var option = select.options[select.selectedIndex]; 
     var ul = select.parentNode.getElementsByTagName('ul')[0]; 
     var choices = ul.getElementsByTagName('input'); 
     for (var i = 0; i < choices.length; i++) 
      if (choices[i].value == option.value) { 
       $("#selcountry:selected").removeAttr("selected"); 
       $('#selcountry').val('[]'); 
       return; 
      } 
     var li = document.createElement('li'); 
     var input = document.createElement('input'); 
     var text = document.createTextNode(option.firstChild.data); 
     input.type = 'hidden'; 
     input.name = 'countries[]'; 
     input.value = option.value; 
     li.appendChild(input); 
     li.appendChild(text); 
     li.onclick = delCountry; 
     ul.appendChild(li); 
     addCountry(option.firstChild.data, option.value); 
     $("#selcountry:selected").removeAttr("selected"); 
     $('#selcountry').val(''); 
    } 

Ваш недостаток теперь очевидна. selectCountry принимает весь выберите элемент в качестве аргумента, в отличие от выбора своей стоимости (который ужасный дизайн, но Мех). Вместо того чтобы передавать значение элемента, изменить его индекс:

var sel = document.getElementById('selcountry'); 
var opts = sel.options;  
for(var i = 0; i < opts.length; i++) { 
    sel.selectedIndex = i 
    selectCountry(sel) 
} 
+0

Это отлично работало. Спасибо за объяснение, хороший урок. – user2694306

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