2011-10-09 48 views
1

由於您無法使用jquery的約束,獲取以特定字符串開頭的所有元素名稱的最佳方法是什麼? (這些都是複選框,我想清除所有別人當一個被選中使用子字符串獲取document.getElementByName

我的解決方案的工作,但似乎不太理想;有沒有更好的辦法

我在做什麼是放? 。一個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> 
+3

是不是有沒有使用收音機而不是複選框的原因? – Shad

+1

此外,HTML元素ID不得以數字開頭: http://www.w3.org/TR/REC-html40/types.html#type-name – Shad

+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]); 
    } 

當然,如果您知道由於您的命名規則而沒有必要按類型過濾,

0

這些是複選框,我想清除所有其他人,當一個是 檢查。

爲什麼不使用單選按鈕呢?