使用子字符串获取document.getElementByName

时间:2011-10-09 22:16:10

标签: javascript

由于您不能使用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>

2 个答案:

答案 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)

  

这些是复选框,我希望清除所有其他复选框   检查。

为什么不使用单选按钮?