如何避免JavaScript数组填充页面加载?

时间:2018-08-09 15:02:18

标签: javascript jquery arrays

因此,我试图根据多个select元素中的选项值通过JQuery填充数组。对于每个选择元素,我希望将数组重新创建为一个空数组,并再次填充新选项。但是,当我在控制台中检查数组时,页面加载后似乎已经充满了每个select元素中的项目。

这是我的JavaScript代码:

$( document ).ready(function() {
   $('#reportForm select').each(function(){
        var optionValues=[];
        console.log(optionValues);
        $('option').each(function(){
           if($.inArray(this.value, optionValues) >-1){
               $(this).remove()
           }else{
              optionValues.push(this.value);
                }
           });
       });
    });

在第一个console.log()上,数组中应该有零个元素,但是它有200个以上。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这是因为循环遍历页面上的所有选项。您必须在选择下拉列表中找到选项。因此,使用$(this).find('option')代替$('option')

$('#reportForm select').each(function(){
    var optionValues=[];
    console.log(optionValues);
    $(this).find('option').each(function(){ // $(this).find will only find options inside the current select
       if($.inArray(this.value, optionValues) >-1){
           $(this).remove()
       } else {
          optionValues.push(this.value);
       }
    });
});