JS For循环不能在Ajax成功响应中正确迭代

时间:2017-11-22 16:09:24

标签: javascript jquery ajax

目标

  • 从Ajax调用中获取数组
  • 在选择字段中迭代选项"#id_asset_field"从1开始
  • 如果选项的值不在数组中,请删除选项

发生了什么:

正确行为:

  • 从Ajax调用返回获取数组:[6,2,7]
  • asset_field.length是12

行为不正确:

  • JS循环只能命中1,2,3,4,5,6,7
  • 而不是只留下选项6,2和7,结果是[2,4,6,7,9,11]。

代码

$("#id_portfolio_field").on('change', function() {
    var url = "/transactions/get/assets/" + $(this).val() + '/';
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function(result) {
            var remove_list = []
            for (i = 1; i < asset_field.length; i++) {
                var _num = parseInt(asset_field.options[i].value)
                if (!(result['assets'].includes(_num))) {
                    remove_list.push(i)
                }
            }
            for (element in remove_list) {
                option = $(asset_field.options[remove_list[element]])
                console.log(remove_list[element] + ' ' + option[0])
                option.remove()
            }
        },
        error: function(result) {
            alert('Bug');
        },
    });
})

问题:

  • 为什么for循环没有正确迭代的任何想法?
  • 我的猜测是,如果问题解决了,它会正确删除正确的选项

更新

我更新了初始评论的代码。 remove_list现在包含我要删除的元素列表。但是,当我遍历该列表时,它不会删除正确的元素。

enter image description here

0 个答案:

没有答案