javascript - Jquery - 将数组值分配给下拉列表

标签 javascript jquery arrays

我有动态附加在页面上的下拉列表,在同一页面上,有一个数组被发布,因此,数组的长度将始终等于附加的下拉列表的数量。例如:

<select name="cavie" class="optimum"><option value=""></option><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option></select>

<select name="cavie" class="optimum"><option value=""></option><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option></select>

<select name="cavie" class="optimum"><option value=""></option><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option></select>

和一个 javascript 数组:

var vals = ["4", "8", "12"];

目的是将数组值按顺序分配给下拉菜单。

目前,我正在使用 for 循环,但这会将所有选择选项设置为最后一个数组的值:

var vals = ["4", "8", "12"];

for(var i in vals)
{
    $('.optimum').val(vals[i]); 
}

上面的内容在这个 fiddle 中:

https://jsfiddle.net/epzjdswn/2/

那么如何实现呢?

最佳答案

您还必须根据索引选择元素,否则您会在每次迭代时设置集合中第一项的值。

您可以使用 eq() 来做到这一点,您可以用 jQuery 的 $.each 替换 for 循环

var vals = ["4", "8", "12"];

$.each(vals, function(i, val) {
    $('.optimum').eq(i).val(val);
});

FIDDLE

也可以选择反过来,迭代元素(使用一点 ES2015 来获得戏剧效果)

var vals = ["4", "8", "12"];
$('.optimum').val(i => vals[i]);

FIDDLE

关于javascript - Jquery - 将数组值分配给下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45694377/

相关文章:

javascript - 比较两个数组,如果发现相同的键,则从第二个数组中获取值

javascript - AngularJS 多维数组

javascript - ( Node :5540) Warning: a promise was created in a handler but was not returned from it

javascript - 简单的 jQuery 图像缩放 - 溢出超大浏览器窗口

javascript - 在 WordPress 中添加自定义 ul 的事件链接

php - 通过在奇数/偶数数字键上拆分数组,我做错了什么?

javascript - 在 Windows Electron 应用程序中启用日志记录

javascript - 是否有 LayoutAnimation.Types 和 LayoutAnimation.Properties 的可用选项列表?

javascript - this 关键字在对象字面量的嵌套函数中

javascript - 如何使用 jquery 在悬停时在褪色图像上显示文本