javascript - 尝试循环遍历 ListBoxFor() 时未定义 select.options
问题描述
我收到这个错误,我不明白为什么。请帮忙。我试图做的是遍历多选列表上的所有选项。
HTML/剃刀
@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] 未定义
解决方案
您已经在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;
}
总体而言,您对糟糕的变量名感到困惑。初始变量称为“选择”,但它不是“选择”。这是一系列选项。所以叫它:
var options = $('#Select')[0].options;
然后循环它更直观:
for (var i = 0; i < options.length; i++) {
并且访问每个选项都很清楚:
if (options[i].value == filterFuncionarios[k].Id) {
options[i].selected = true;
}
推荐阅读
- asp.net-core-2.0 - API Json 响应大小限制
- sql - 在 SQL Server 中将 CTE 转换为临时表以获取所有可能的父级
- elasticsearch - 在嵌套对象中搜索
- r - 如何使用自定义阈值按行自定义数据表
- servlets - 限制同一用户跨 2 个 Web 应用程序的多次登录
- firebase - 如何使用 Firebase 为单页应用程序实现 sitemap.xml 文件?
- python - 如何跨 wxPython 框架传递信息?
- php - Mysqli 准备好的语句从数组动态构建 INSERT 查询
- jdbc - kafka 连接 JDBC 接收器。展平 JSON 记录时出错
- r - 'centralityPlot(network)' 没有打印出中间性和接近性