[英]Populating a select element with comma-separated values using for loop
我有一堆用逗号分隔的值存储为JSON文件中的字符串。 我的目的是拆分这些值以填充基于Selectize.js的select元素。 代码(节选)如下:
var options = {};
var attr_split = data.attributes['Attribute1'].split(",");
var options_key;
for (var i = 0; i < attr_split.length; i++) {
options_key = attr_split[i]
}
var options_values = {
value: options_key,
text: options_key,
}
if (options_key in options)
options_values = options[options_key];
options[options_key] = options_values;
$('#input').selectize({
options: options,
});
尽管这似乎可行,但是select元素中的输出仅显示了for循环完成的最后一次迭代。 根据这里和这里 ,我尝试了
for (var i = 0; i < attr_split.length; i++) {
var options_key += attr_split[i]
}
但这会向我抛出未定义加上所有串联字符串(不带分隔符),如以下示例所示:
undefinedAttr1Attr2Attr3
当我使用数组元素的手动输入简单地测试循环时,一切看起来都很好:
for (var i = 0; i < attr_split.length; i++) {
var options_key = attr_split[0] || attr_split[1] || attr_split[2]
}
但这不是可行的方法,因为每个字符串的元素数量不同。
对我在这里做错的任何想法吗? 我觉得这很简单:)
当声明“options_key”,您没有初始化it.so它的值是undefined
。当您连接options_key += attr_split[i]
在第一次迭代options_key
保持undefined
。所以只有你正在undefinedAttr1Attr2Attr3
。
所以像这样声明和初始化options_key
。
var options_key="";
在你的循环中
for (var i = 0; i < attr_split.length; i++)
{
options_key = attr_split[i]
}
每次将options_key
替换为attr_split[i]
值时,因此循环后它将包含最后一个元素值。
for (var i = 0; i < attr_split.length; i++)
{
options_key += attr_split[i]
}
只需更改var options_key;
到var options_key="";
之所以未定义,是因为您没有正确定义变量。
这是一个有效的例子
var attr_split = "1,2,3,4".split(",");
var options_key="";
for (var i = 0; i < attr_split.length; i++) {
options_key += attr_split[i]
}
alert(options_key);
var options_values = {
value: options_key,
text: options_key
}
alert(options_values);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.