JavaScript String indexOf() 也选择 1&3 而不是仅选择 13
JavaScript String indexOf() selects also 1&3 instead of only 13
我有这个 indexOf()
,我遇到的问题是,当 norms[]
有一个像 2,13
这样的数据集时,在 [=16] 中设置为 selected
的选项=] 不仅是值 2
和 13
,而且还有值 1
和 3
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>
我有这个 indexOf()
,我遇到的问题是,当 norms[]
有一个像 2,13
这样的数据集时,在 [=16] 中设置为 selected
的选项=] 不仅是值 2
和 13
,而且还有值 1
和 3
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>