由于您不能使用jquery的约束,获取以特定字符串开头的所有元素名称的最佳方法是什么? (这些是复选框,我想在选中一个时清除所有其他复选框。
我的解决方案有效,但似乎不是最优的;有更好的方法吗?
我正在做的是将复选框放在div中并获取div的所有子项,然后将它们的名称与我正在寻找的名称进行比较。这是javascript:
<script language="javascript" type="text/javascript">
function clearCheckboxes(name, id, divtag) {
if (document.getElementById(id).checked == false) {
return;
}
var listbox = document.getElementById(divtag);
var list = listbox.childNodes;
for(var i = 0; i < list.length; i++) {
if (list[i].type != "checkbox") continue;
if (list[i].id == id) continue;
if (list[i].name.substr(0, name.length) == name)
{
list[i].checked = false;
}
}
}
然后html看起来像这样:
<div id="tag_div_2">
<input type="checkbox" name="tags_Type_4" id="4" onclick="clearCheckboxes('tags_Type_',4,'tag_div_2');" />3 Stone Ring
<input type="checkbox" name="tags_Type_3" id="3" onclick="clearCheckboxes('tags_Type_',3,'tag_div_2');" />Engagement Ring
<input type="checkbox" name="tags_Type_2" id="2" onclick="clearCheckboxes('tags_Type_',2,'tag_div_2');" />Solitaire
<input type="checkbox" name="tags_Type_5" id="5" onclick="clearCheckboxes('tags_Type_',5,'tag_div_2');" />Wedding Set
</div>
答案 0 :(得分:1)
我想我只是使用“getElementsByTagName()”。
var inputs = document.getElementById('tag_div_2').getElementsByTagName('input');
var checkboxes = [];
for (var i = 0; i < inputs.length; ++i)
if (inputs[i].type === "checkbox" && inputs[i].name.substr(0, name.length === name)) {
checkboxes.push(inputs[i]);
}
当然,如果您知道由于您的命名惯例而没有必要,您不必按类型进行过滤。
答案 1 :(得分:0)
这些是复选框,我希望清除所有其他复选框 检查。
为什么不使用单选按钮?