wake-up-neo.com

Nicht erfasster Syntaxfehler: Fehler beim Ausführen von 'querySelector' für 'Dokument'

'<button id="'+item['id']+'" class="btnDeactivateKeyInChildPremiumCustomer waves-effect waves-light>ok</button>'

Ich habe den obigen Code zum Generieren von Schaltflächen innerhalb jeder Funktion verwendet. Die Schaltfläche wurde dynamisch erstellt, und wenn ich auf die Schaltfläche klickte, sollte der Fortschritt auf der Schaltfläche angezeigt werden. Ich benutze diese Ladda Button Loader .

    btnDeactivateKeyInChildPremiumCustomerClick : function(event){
        var id = event.currentTarget.id;
        var btnProgress = Ladda.create(document.querySelector('#'+id));
//btnProgress.start(); or //btnProgress.stop();
    }

Und dann übergab ich den Knopf, den die Ereignisbehandlungsroutine den Ereignisprozeß die oben genannte Funktion abfängt. Innerhalb dieser Funktion verursacht sie ein btnProgress Objekt. Danach kann ich die Funktionen start () oder stop () aufrufen. Ich habe die Funktion bei nur einer Schaltfläche erfolgreich ausgeführt, ohne die Schaltfläche in jeder dynamisch zu erstellen. Aber in jedem Fall zeigt es einige Fehler beim Ausführen von var btnProgress = Ladda.create (document.querySelector ('#' + id));

Fehler

Uncaught SyntaxError: Failed to execute 'querySelector' on 'Document': '#22' is not a valid selector.
29
boycod3

Sie dürfen IDs, die mit einer Ziffer beginnen in Ihren HTML5-Dokumenten verwenden:

Der Wert muss unter allen IDs im Ausgangsunterbaum des Elements eindeutig sein und mindestens ein Zeichen enthalten. Der Wert darf keine Leerzeichen enthalten.

Es gibt keine weiteren Einschränkungen, wie eine ID aussehen kann. Insbesondere können IDs nur aus Ziffern bestehen, mit einer Ziffer beginnen, mit einem Unterstrich beginnen, nur aus Satzzeichen bestehen usw.

Die querySelector -Methode verwendet CSS3-Selektoren zum Abfragen des DOM, und CSS3 unterstützt keine ID-Selektoren, die mit einer Ziffer beginnen:

In CSS dürfen Bezeichner (einschließlich Elementnamen, Klassen und IDs in Selektoren) nur die Zeichen [a-zA-Z0-9] und ISO 10646 (U + 00A0 und höher) sowie den Bindestrich (-) und den Unterstrich ( _); Sie dürfen nicht mit einer Ziffer, zwei Bindestrichen oder einem Bindestrich gefolgt von einer Ziffer beginnen.

Verwenden Sie einen Wert wie b22 für das ID-Attribut und Ihr Code wird funktionieren.

Da Sie ein Element nach ID auswählen möchten, können Sie auch .getElementById Methode:

document.getElementById('22')
60
undefined

Obwohl dies in HTML gültig ist, können Sie keine ID verwenden, die mit einer Ganzzahl in CSS-Selektoren beginnt.

Wie bereits erwähnt, können Sie stattdessen getElementById verwenden, aber Sie können dasselbe auch mit einem querySelector erreichen:

document.querySelector("[id='22']")
10
CodingIntrigue