我的html代码中有这个选择:
<select id="select_type">
</select>
我需要放一个&#34;选项&#34;在我的选择中,所以在我的jquery froman aray:
array.push('a');
array.push('b');
array.push('c');
array.push('d');
for (var i in array) {
console.log("hi");
$('#select_type').append('<option value="' + array[i] + '">' + array[i] + '</option>');
}
问题是我可以看到我创建的选项,如果我读了&#34; hi&#34;打印。有人可以帮帮我吗?
答案 0 :(得分:3)
你需要做两件事:
document
的{{1}}功能。 (我相信脚本在DOM加载之前加载了)ready
。
array
$(function () {
var array = [];
array.push('a');
array.push('b');
array.push('c');
array.push('d');
for (var i = 0; i < array.length; i++) {
console.log("hi");
$('#select_type').append('<option value="' + array[i] + '">' + array[i] + '</option>');
}
});
另外,请不要使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select_type">
</select>
来迭代数组。
另外,我不明白你的for...in
个人元素背后的原因。可以使用以下方法重构:
.push()
最后,在循环内使用array.push('a', 'b', 'c', 'd');
或任何DOM修改都很昂贵。所以你可以用这种方式考虑更好的代码:
.append()
$(function () {
var array = ['a', 'b', 'c', 'd'];
var finalHTML = "";
for (var i = 0; i < array.length; i++) {
console.log("hi");
finalHTML += '<option value="' + array[i] + '">' + array[i] + '</option>';
}
$('#select_type').append(finalHTML);
});
答案 1 :(得分:2)
您也可以使用forEach
循环
var array = [];
array.push('a', 'b', 'c', 'd');
array.forEach(function(el) {
$('#select_type').append('<option value="' + el + '">' + el + '</option>');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select_type"></select>
&#13;
您也可以使用JQuery $.each
循环,并且可以将所有选项添加到循环结束内的一个字符串,然后将该字符串附加到HTML
,如@Tushar建议
var array = ['a', 'b', 'c', 'd'], string = '';
$.each(array, function(i, el) {
string += '<option value="' + el + '">' + el + '</option>';
});
$('#select_type').append(string);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select_type"></select>
&#13;