这篇文章是在正确的轨道上,但我需要更进一步;我的输入名称可能具有分配给它们的非顺序索引值。
背景:我有一个例程,它通过在下拉框中选择值来构建一个列表,而不是一长串的复选框。这有助于减少屏幕上的空间。因此,当用户从下拉列表中选择值时,脚本会尝试确保选择不存在,如果存在,请不要再次添加它。
生成的列表如下所示:
<div id="Access:search_div">
<ul class="options">
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[7]" value="1" />Standard</li>
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[8]" value="1" />Premium</li>
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[10]" value="1" />Lifetime</li>
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[14]" value="1" />SysOp</li>
</ul>
</div>
我看到很多关于如何查找值的示例,但它只是一个布尔值,所以如果它在列表中,它将始终为 1。我需要搜索名称并查看附加的索引值。所以对于上面的代码,我想从下拉列表中选择的项目的值与 7、8、10 和 14 进行比较。
这是我到目前为止的代码的重要部分:
function addRoleOptions(select, variable, output) {
var display=document.getElementById(output);
var option = select.options[select.selectedIndex];
var ul = display.getElementsByTagName('ul')[0];
if (!ul) {
ul = document.createElement("ul");
ul.setAttribute('class', 'options');
display.innerHTML = '';
display.appendChild(ul);
}
var choices = ul.getElementsByTagName('input');
for (var i = 0; i < choices.length; i++) {
if (choices[i].value == option.value) {
return;
}
}
option.value 包含我要比较的数字。
所以我的问题是,如何解析名称 [] 中的值以与发送的值进行比较?