JavaScript String indexOf() 也选择 1&3 而不是仅选择 13

JavaScript String indexOf() selects also 1&3 instead of only 13

我有这个 indexOf(),我遇到的问题是,当 norms[] 有一个像 2,13 这样的数据集时,在 [=16] 中设置为 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 感谢小费

看你自己的回答,

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

我觉得不对 - 你可能是说

element.options[i].selected = true;

将整个 if 翻译成

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>