【发布时间】:2014-08-18 18:36:07
【问题描述】:
我有一系列与复选框相关联的数组。
这是 HTML:
<input type="checkbox" value="value1">Value 1
<input type="checkbox" value="value2">Value 2
<input type="checkbox" value="value3">Value 3
在我的 jQuery 中,我将这些数组定义如下:
var value1 = ['item1', 'item2', 'item3'];
var value2 = ['itemA', 'itemB', 'itemC'];
var value3 = ['item!', 'item@', 'item#'];
我想根据选中的复选框创建一个新数组,并基本上创建一个数组数组。我已经为此尝试了以下代码,但它不起作用:
var newArray = [];
$('input[type=checkbox]:checked').map(function(){
newArray.push($(this).val());
});
我可以硬编码 newArray 如下:
var newArray = [value1, value2, value3];
newArray 被填充后,我想循环遍历 newArray 中包含的数组的值以选择随机索引并将它们推送到 randArray。如果我按如下方式对 newArray 进行硬编码,则此部分有效:
var newArray = [itemC, item!, item1]
但如果我尝试将复选框值映射到 newArray,它将不起作用。填充 newArray 后,我想确保 newArray 中每个子集的至少一项包含在 randArray 中。我目前遇到的困难部分是根据检查的内容使用子集填充 newArray。
我正在尝试完成的一个示例类似于在 http://passwordsgenerator.net/ 找到的示例
【问题讨论】:
-
当一个复选框没有被选中时,你想在 newArray 中做什么?
-
当未选中复选框时,它应该只是一个空数组。
-
JavaScript 无法使用包含第一个名称的另一个变量来访问变量的值。这个概念在 PHP 中叫做“变量”,而 JS 没有这个“特性”。您应该放弃使用名为“value1”、“value2”和“value3”的变量,而是使用对象作为关联数组,然后根据复选框值进行查找。例如:var values = { 'value1': ['item1', ...], 'value2': ['itemA', ...], 'value3': ['item!', ...] };每当您有两个名为“something1”和“something2”的变量时,您可能做错了!
-
我认为这给了我正确的方向。谢谢你,内特。
标签: javascript jquery html arrays