2012-05-27 83 views
53

我正在嘗試使用document.querySelectorAll來設置設置了value屬性的所有複選框。如何僅將querySelectorAll用於具有特定屬性集的元素?

頁面上還有其他沒有value集的複選框,並且每個複選框的值都不相同。 ID和名稱並不是唯一的。

例子: <input type="checkbox" id="c2" name="c2" value="DE039230952"/>

如何選擇只是那些值設置複選框?

+1

這是否包括空白?就像'values =「」' – Joseph

+0

其他複選框根本沒有任何價值,所以它不必包含它。 – Soryn

回答

116

您可以使用querySelectorAll()這樣的:

var test = document.querySelectorAll('input[value][type="checkbox"]:not([value=""])'); 

這相當於:

得到所有的輸入與屬性「價值」和具有屬性「價值」不爲空。

In this demo,它將禁用非空值複選框。

+0

如何僅選擇複選框類型輸入?還有很多其他具有值屬性的輸入標籤,但我只需要複選框。 – Soryn

+1

@Soryn add'[type =「checkbox」]'。更新了我的答案。 – Joseph

+0

啊真棒......謝謝! – Soryn

5

額外提示:

多個 「窮人」,輸入爲非隱藏並沒有禁用:

:not([type="hidden"]):not([disabled]) 

而且你可知道,你可以這樣做:

node.parentNode.querySelectorAll('div'); 

這與jQuery的相同:

$(node).parent().find('div'); 

這將有效地找到「節點」和下面遞歸的所有div,HOT DANM!

-6

document.querySelectorAll()對於輸入,默認情況下僅返回檢查的輸入。

Regards;)

相關問題