Klasse entfernen

lano

Aktives Mitglied
Moin.

Ich hab mir ne kleine Funktion gebastelt um eine Klasse zu entfernen.
Allerdings hab ich das Problem das wenn es die Klasse gar nicht gibt es zu nem Fehler kommt und das script nichht weiter macht.

Javascript:
lib.removeClass = function (idOrElement, strClasses) {
    var element = document.getElementById(idOrElement);
    element.classList.remove(strClasses);
};

Mach ich da was falsch? Sollte ich vorher prüfen obs Element die Klasse überhaupt hat bevor ich sie zu entfernen versuche ?
 
Hehe, du hast deine Frage quasi schon selbst beantwortet. Die getElementById Methode gibt null zurück wenn das Element nicht gefunden wird. Sollte also easy sein das zu checken.
 
Die getElementById Methode gibt null zurück wenn das Element nicht gefunden wird.

Die Elemente sind alle da. Nur kommt es mir so vor als gibt es den Fehler wenn ich versuche eine Klasse zu entfernen die es gar nicht gibt.

Also um das wirklich save zu machen müsste ich gucken obs das Element gibt. Danach ob es die Klasse überhaupt hat und erst dann versuchen sie zu entfernen.

so ?
Javascript:
    lib.removeClass = function(idOrElement, strClasses) {
        var element = document.getElementById(idOrElement);
        if (element != null) {
            if( lib.hasClass(idOrElement,strClass) {
                element.classList.remove(strClasses);
            }
        }
    };
 
Verdammt. Du scheinst doch recht zu haben. Ich habs element jetzt vorher auf nul getestet und es gibt zumindest keinen Fehler mehr.
 
"idOrElement" kann es sein, dass du da neben Ids auch Elemente an getElementById übergibst? Wenn ja: Das funktioniert natürlich nicht.
 
"idOrElement" kann es sein, dass du da neben Ids auch Elemente an getElementById übergibst?

Ne, aber wo du es schon ansprichst. Reicht das idOrElement zu prüfen ob es ein String ist ? Wenn nein als Objekt behandeln ? Wäre jetzt so meine erste Idee. Andere hab ich aber auch nicht :LOL:
 
Ja, if (typeof idOrElement === 'string') ist ok. Du kannst auch speziell prüfen, ob es wirklich ein Element ist mit if (idOrElement instanceof Element). Zum Entfernen brauchst du aber nicht prüfen, ob sie existiert. element.classList.remove() macht einfach nichts, wenn es nur die Klasse nicht gibt. Eine Prüfung ginge aber übrigens via element.classList.contains('klasse-die-geprüft-werden-soll').
 
Du kannst auch speziell prüfen, ob es wirklich ein Element ist

cool. Hab das jetzt quasi so:
Javascript:
        lib.get = function(idOrElement) {
            if (idOrElement && 'string' === typeof idOrElement) {
                return document.getElementById(idOrElement);
            } else if (idOrElement && idOrElement instanceof Element) {
                    return idOrElement
            }
            return null;
        };

Zum Entfernen brauchst du aber nicht prüfen, ob sie existiert.

Ah OK. Dann schenke ich mir das.
 
Ja, das sieht sehr gut aus. Die Prüfung idOrElement && bräuchtest du auch nicht, weil die Prüfungen dahinter das bereits implizieren. Zu einem Fehler führt es auch nicht, da idOrElement immer deklariert ist (das ist hier der wichtige Punkt) und im schlimmsten Fall den Wert undefined hat, wodurch die Bedingungen immer false ergeben.
 
Zurück
Oben Unten