我有一个下拉列表,其中使用jquery从数据库动态填充选项。代码是:
$('.Input').html("");
for(i=0, len=data.length; i<len; i++){
$('.Input').append('<option>' + data[i].abc + '</option');
}
HTML是:
<select class="Input"></select>
当数据本身被换行分隔时,这非常有效。当值为数据库时,我面临一个问题,存储为abc = [x,y,z]。下拉列表将其显示为x,y,z,而不是将它们设置为换行符。
我尝试使用
var listItems = "<option value=''> </option>";
$.each(data[0].abc, function(index, title) {
listItems+= "<option value='" + title+ "'>" + title+ "</option>";});
$("#selectItems").html(listItems);
和我对应的HTML为:
<select id="selectItems"></select>
但在这种情况下,如果它是数据库中的单个选项,则该选项将按其字母拆分。例如,APPLE将以A P P L E的形式出现,每个字母都在一个新行中。
关于我能做什么的任何建议?
答案 0 :(得分:1)
Javascript可以与arrauy元素一样使用与字符串中的字符相同的方式。 您应该检查您拥有的数据类型。
我还没有说明你的例子你想要转换的数组在哪里(数据或数据[0] .abc,或者数据是一个带有对象的数组,你希望每个元素都是abc,...)
也许这个例子可以给你一个想法:
var listItems = "<option value=''> </option>";
if( typeof data === 'string' ) {
listItems+= "<option value='" + data+ "'>" + data+ "</option>";
} else {
$.each(data, function(element) {
listItems+= "<option value='" + element.abc+ "'>" + element.abc+ "</option>";
});
}
$("#selectItems").html(listItems);