Javascript - 循环选择选项,点击每个选项

时间:2014-07-02 22:56:10

标签: javascript

我正在尝试浏览包含200多个条目的选择列表,然后单击每个条目。单击一个元素时,它会执行一个函数selectCountry(),它会向表中添加一行。我想让它创建一个包含所选选项的表。感兴趣的页面位于:http://www.world-statistics.org/result.php?code=ST.INT.ARVL?name=International%20tourism,%20number%20of%20arrivals

到目前为止,我有以下内容,但它似乎不起作用:

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

我正在尝试在Chrome控制台中执行此操作。

1 个答案:

答案 0 :(得分:1)

开发工具最有用的功能之一是,当您编写函数名称时,您将获得其源代码。这是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接受整个 选择元素 作为参数,而不是 选择值 (这是一个糟糕的设计但是meh)。不要传递元素的值,而是更改其索引:

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