首页 > 解决方案 > 在 setTimeout 函数中返回选择器的结果?

问题描述

JS新手在这里,很抱歉提前提出愚蠢的问题。

我正在尝试从一个选择元素中收集所有选项,并将另一个选择元素中的可用选项基于在第一个选择元素中选择的任何内容。等待 1 秒后,我得到了 select 元素的所有选项,因为这些选项是动态派生的,不能立即查询。问题是我不知道如何返回allNameOptions,以便可以在以下change函数中使用它。我尝试了一个 return 语句,但由于某种原因,它返回了 value 3。不知道那是从哪里来的。

当前代码:

setTimeout(function () {
    var allNameOptions = $('#cipAreaNames option');
}, 1000);

$('#printStateAbbrev').change(function () {
    $('#cipAreaNames option').remove()
    var selState = $('#printStateAbbrev option:selected').prop('value');
    var availOptions = allNameOptions.filter('.' + selState);
    $.each(availOptions, function (i, j) {
        $(j).appendTo('#cipAreaNames');
    });
});

我尝试的(并在更改功能中编辑allNameOptionsnames

var names = setTimeout(function () {
    var allNameOptions = $('#cipAreaNames option');
    return allNameOptions;
}, 1000);

标签: javascriptreturn-value

解决方案


您需要allNameOptions在函数之外,在全局空间中声明变量,没有值。就像刚刚一样var allNameOptions;。接下来,您可以在一个函数中给它一个值并在另一个函数中使用它。


推荐阅读