select.options 在尝试循环 ListBoxFor() 时未定义
select.options is undefined when trying to loop through ListBoxFor()
我收到此错误,但我不明白为什么。请帮忙。
我想做的是遍历多选列表中的所有选项。
HTML/Razor
@Html.ListBoxFor(model => model.SelectedUsersIdsArray, new MultiSelectList(Model.Users, "ID", "NAME"), new { id = "Select", multiple = "multiple" })
JavaScript
var filterFuncionarios = [];
@foreach (var f in Model.Funcionarios)
{
@:filterFuncionarios.push({ Id: "@f.ID"})
}
var selecionados = $('#usersSelectDropdown')[0].options;
function filtraListDeFuncionarios() {
for (var i = 0; i < this.selecionados.length; i++) {
for (var k = 0; k < filterFuncionarios.length; i++) {
if (selecionados[i].value == filterFuncionarios[k].Id) {
selecionados[i].selected = true;
}
}
}
}
这是我的确切代码 运行。
错误
未捕获的类型错误:selecionados[i] 未定义
您收到了 select 定义中的选项,
var select = $('#Select')[0].选项;
然后您尝试访问 for
中的选项
select.options[i].selected = true;将等于 $('#Select')[0].options.options;
我建议您从 $('#Select')
中删除 .options
您已经在此处阅读 options
数组:
var select = $('#Select')[0].options;
你循环的:
for (var i = 0; i < select.length; i++) {
但随后您尝试读取同一个数组上的另一个 options
属性:
if (select.options[i].value == filterFuncionarios[k].Id) {
select.options[i].selected = true;
}
总的来说,您对糟糕的变量名感到困惑。初始变量称为“select”,但它不是“select”。这是一系列选项。所以称它为:
var options = $('#Select')[0].options;
然后循环遍历更直观:
for (var i = 0; i < options.length; i++) {
访问每个选项都很清楚:
if (options[i].value == filterFuncionarios[k].Id) {
options[i].selected = true;
}
我收到此错误,但我不明白为什么。请帮忙。 我想做的是遍历多选列表中的所有选项。
HTML/Razor
@Html.ListBoxFor(model => model.SelectedUsersIdsArray, new MultiSelectList(Model.Users, "ID", "NAME"), new { id = "Select", multiple = "multiple" })
JavaScript
var filterFuncionarios = [];
@foreach (var f in Model.Funcionarios)
{
@:filterFuncionarios.push({ Id: "@f.ID"})
}
var selecionados = $('#usersSelectDropdown')[0].options;
function filtraListDeFuncionarios() {
for (var i = 0; i < this.selecionados.length; i++) {
for (var k = 0; k < filterFuncionarios.length; i++) {
if (selecionados[i].value == filterFuncionarios[k].Id) {
selecionados[i].selected = true;
}
}
}
}
这是我的确切代码 运行。
错误 未捕获的类型错误:selecionados[i] 未定义
您收到了 select 定义中的选项,
var select = $('#Select')[0].选项;
然后您尝试访问 for
中的选项select.options[i].selected = true;将等于 $('#Select')[0].options.options;
我建议您从 $('#Select')
中删除 .options您已经在此处阅读 options
数组:
var select = $('#Select')[0].options;
你循环的:
for (var i = 0; i < select.length; i++) {
但随后您尝试读取同一个数组上的另一个 options
属性:
if (select.options[i].value == filterFuncionarios[k].Id) {
select.options[i].selected = true;
}
总的来说,您对糟糕的变量名感到困惑。初始变量称为“select”,但它不是“select”。这是一系列选项。所以称它为:
var options = $('#Select')[0].options;
然后循环遍历更直观:
for (var i = 0; i < options.length; i++) {
访问每个选项都很清楚:
if (options[i].value == filterFuncionarios[k].Id) {
options[i].selected = true;
}