JavaScript字符串indexOf()还选择1&3而不是仅13



我有这个indexOf(),问题是当norms[]有一个像2,13这样的数据集时,在norm_id['+nr+'][]中设置为selected的选项不仅是值213,还有值13

var element = document.getElementById('norm_id['+nr+'][]');
var values = norms[];
for (var i = 0; i < element.options.length; i++) {
element.options[i].selected = values.indexOf(element.options[i].value) >= 0;
}

如何解决这个问题有什么建议吗?

我已经用下面的代码解决了这个问题。

var element = document.getElementById('calc_norm_id['+nr+'][]');
var values = norms;
var values_split = values.split(',');
for (var i = 0; i < element.options.length; i++)
{
for(var j = 0; j < values_split.length; j++)
{
if(element.options[i].value == values_split[j])
{
element.options[i].selected = element.options[i].value;
}
}
}

@尖端的Andreas thx

看看你自己的答案,

element.options[i].selected = element.options[i].value

我觉得不太对劲-你可能是指

element.options[i].selected = true;

将整个CCD_ 10转换为

element.options[i].selected element.options[i].value == values_split[j];

这是更简单的

const norms = "1,13";
const nr = 1;
var values_split = norms.split(',');
var options = document.getElementById('calc_norm_id[' + nr + '][]').options;
[...options].forEach(opt => opt.selected = values_split.indexOf(opt.value) != -1);
<select id="calc_norm_id[1][]" multiple>
<option value="">Please select</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
</select>

最新更新