使用 for 循环用逗号分隔的值填充选择元素

Populating a select element with comma-separated values using for loop

本文关键字:填充 选择 元素 分隔 for 循环 使用      更新时间:2023-09-26

我在 JSON 文件中存储了一堆逗号分隔的值作为字符串。我的目标是拆分这些值以填充基于 Selectize.js 的选择元素。代码(摘录)如下所示:

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].in第一次迭代时,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] .so 的值时,循环后它将包含最后一个元素值。更正后的代码是

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);