2016-05-15 15 views
0

Attribute Wenn ich diese Zeichenfolge haben: `.querySelectorAll wie nur Elemente nehmen mit allen

document.querySelectorAll("[data-name=" + CSS.escape(variable) + "]","[class='nameclass']"); 

Es nimmt alle Elemente mit dem ersten Attribut und alle Elemente mit dem zweiten Attribut.

Wie muss ich nur Elemente mit jedem Attribut nehmen?

+0

'document.querySelectorAll' hat nur ein Argum ent. Warum liefern Sie zwei? Deine Frage ist nicht sehr klar. Was ist das "erste" und "zweite" Attribut, das die Funktion benötigt? Was ist dein erwartetes Ergebnis? – Xufox

+0

Wenn ich das auf Konsole gebe, nimmt es alle Elemente mit Datenname gleich dieser Variablen und alle Elemente mit Klassenname gleich dem Klassennamen, aber ich möchte alle Elemente mit diesem Datennamen und diesem Klassennamen nehmen, was ich habe machen? – Gicminos

+1

Würde 'document.querySelectorAll ('. Nameclass [datenname =' + CSS.escape (variable) + ']')' tun, was Sie brauchen? Oder verwenden Sie absichtlich die Attribut-Gleichheits-Notation, um Elemente mit zusätzlichen Klassen auszuschließen? –

Antwort

1

ich damit behoben haben:

document.querySelectorAll("[data-name=" + CSS.escape(item) + "][class='placeholder matched']"); 

das Entfernen

Danke für alle Antwort

+2

Wenn die Absicht darin besteht, sowohl 'placeholder'- als auch' matched'-Klassen zu finden, wäre @Vohumans Lösung immer noch der richtige Weg, wie '.placeholder.matched [Datenname = ...]'. Anderenfalls kann selbst bei etwas anderen Leerzeichen die Auswahl fehlschlagen. –

5

Es scheint, Sie sind für diesen Wähler suchen:

document.querySelectorAll(".nameclass[data-name=" + CSS.escape(variable) + "]"); 

Bitte beachten Sie, dass ich .nameclass als Klasse-Selektor verwendet haben, die sich von [class=nameclass] unterscheidet. Die erste wählt die Elemente aus, deren eine Klasse nameclass ist, und die zweite wählt Elemente aus, die nur das Klassenattribut nameclass haben.

Wenn die Elemente, die nur nameclass Klasse Attribut ausgewählt werden sollte, sollte der Wähler sein:

"[class=nameclass][data-name=" + CSS.escape(variable) + "]"