2012-05-27 6 views
53

Ich versuche document.querySelectorAll für alle Kontrollkästchen zu verwenden, die das Attribut value festgelegt haben.Wie verwende ich querySelectorAll nur für Elemente, die ein bestimmtes Attribut gesetzt haben?

Es gibt andere Kontrollkästchen auf der Seite, die nicht value festgelegt haben, und der Wert ist für jedes Kontrollkästchen unterschiedlich. Die IDs und Namen sind jedoch nicht eindeutig.

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

Wie kann ich nur diese Checkbox auswählen, die Werte festgelegt haben?

+1

enthält das Leerzeichen? wie 'values ​​=" "' – Joseph

+0

haben die anderen Checkboxen überhaupt keinen Wert, so dass das nicht berücksichtigt werden müsste. – Soryn

Antwort

116

können Sie querySelectorAll() wie folgt verwenden:

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

Dies führt zu:

alle Eingaben erhalten mit dem Attribut "Wert" und hat das Attribut "value", die nicht leer ist.

In this demo, es deaktiviert das Kontrollkästchen mit einem nicht leeren Wert.

+0

Wie kann man jedoch nur Checkbox-Eingaben wählen? Es gibt viele andere Eingabe-Tags, die Wert-Attribute haben, aber ich möchte nur die Kontrollkästchen. – Soryn

+1

@Soryn add '[type =" checkbox "]'. Meine Antwort wurde aktualisiert. – Joseph

+0

ah super ... danke! – Soryn

5

Extra-Tipps:

Mehrere "Nichtse", Eingabe, die nicht ausgeblendet ist und nicht deaktiviert:

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

Auch wussten Sie, können Sie dies tun:

node.parentNode.querySelectorAll('div'); 

Dies ist äquivalent zu jQuerys:

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

Das wird effektiv alle Divs in "Knoten" und darunter rekursiv finden, HOT DANM!

-6

document.querySelectorAll() für Eingabe-Returns werden nur die Eingaben standardmäßig überprüft.

Grüße;)