Javascript 从数组生成select选项,并通过与另一个数组比较选择多个元素(jQuery)
我想做的是从JavaScript数组中为多选下拉列表生成选项元素。然后在下拉列表中选择与另一个数组(示例中的结果数组)中的值相同的每个选项 问题是,当结果数组有多个元素时,原始选项在HTML中与结果数组中的元素数相乘 我理解为什么会发生这种情况,但我似乎找不到比我目前使用的解决方案更好的解决方案,它是这样的:Javascript 从数组生成select选项,并通过与另一个数组比较选择多个元素(jQuery),javascript,jquery,arrays,loops,Javascript,Jquery,Arrays,Loops,我想做的是从JavaScript数组中为多选下拉列表生成选项元素。然后在下拉列表中选择与另一个数组(示例中的结果数组)中的值相同的每个选项 问题是,当结果数组有多个元素时,原始选项在HTML中与结果数组中的元素数相乘 我理解为什么会发生这种情况,但我似乎找不到比我目前使用的解决方案更好的解决方案,它是这样的: var options = ['Some value', 'Another value', 'Third value', 'Something completely different']
var
options = ['Some value', 'Another value', 'Third value', 'Something completely different'],
results = ['Some value', 'Another value'],
selectHtml;
$.each( options, function( index, value ) {
var option = value;
$.each( results, function( index, value ) {
if ( option === value ) {
selectHtml += '<option selected="selected" value="' + option + '">' + option + '</option>';
}
else {
selectHtml += '<option value="' + option + '">' + option + '</option>';
}
});
});
你可以在这里找到一个活生生的例子:
我想要完成的是相同的事情,但是没有元素的乘法。问题是,您正在迭代options数组中每个元素的results数组。您可以使用indexOf方法确定当前选项是否在结果数组中: 这是一个例子
但是,请记住,这在较旧的浏览器中是不可用的,因此您可能希望包含polyfill。MDN在上面的链接中提供了一个选项。问题在于,您正在迭代选项数组中每个元素的结果数组。您可以使用indexOf方法确定当前选项是否在结果数组中: 这是一个例子 但是,请记住,这在较旧的浏览器中是不可用的,因此您可能希望包含polyfill。MDN在上面的链接中提供了一个。执行数组搜索
var
options = ['Some value', 'Another value', 'Third value', 'Something completely different'],
results = ['Some value', 'Another value'],
selectHtml;
$.each( options, function( index, value ) {
var option = value;
if (results.indexOf(option) == -1){
selectHtml += '<option value="' + option + '">' + option + '</option>';
} else {
selectHtml += '<option selected="selected" value="' + option + '">' + option + '</option>';
}
});
$('#test').html( selectHtml );
执行数组搜索
var
options = ['Some value', 'Another value', 'Third value', 'Something completely different'],
results = ['Some value', 'Another value'],
selectHtml;
$.each( options, function( index, value ) {
var option = value;
if (results.indexOf(option) == -1){
selectHtml += '<option value="' + option + '">' + option + '</option>';
} else {
selectHtml += '<option selected="selected" value="' + option + '">' + option + '</option>';
}
});
$('#test').html( selectHtml );
生成select,然后执行以下操作如何
$("#selectId").val(results);
生成select,然后执行以下操作如何
$("#selectId").val(results);
是的,但是还有其他情况迫使我实现循环解决方案。嗯,然后我在这里严重浪费了我的时间。是的,但是还有其他情况迫使我实现循环解决方案。嗯,然后我在这里严重浪费了我的时间。