Hallo einsiedler,
was soll ich zeigen? Du hattest es doch selbst schon richtig, mit classList.add(...). Wenn das nicht funktioniert hat, lag das an einer Ursache, die aus dem, was Du gezeigt hast, nicht erkennbar ist.
Typische Probleme sind DOM Elemente, die nicht gefunden werden. Das führt meistens zu Fehlermeldungen im Konsole-Tab der Dev-Tools. Gab es welche?
<exkurs thema="Deine Regex">
/(?:^\|\s).js-disabled(?!\\S)/
. Die matcht zu viel, und das falsche.
- Deine einleitende Gruppe matcht den String-Anfang oder ein Whitespace. Das ist am String-Anfang okay, aber in "treemain js-disabled" würdest Du auch das Space zwischen den Klassennamen matchen und ersetzen. Das willst Du nicht.
- Der Punkt gehört da nicht hin. Aus zwei Gründen
- In einem CSS Selektor bedeutet der Punkt, dass jetzt ein Klassenname folgt. Der Punkt ist aber nicht Teil des className-Attributs, darum musst Du ihn auch nicht matchen.
- Der Punkt hat in der Regex die Bedeutung, die bei der Dateisuche das Sternchen hat. Er matcht jedes Zeichen. Willst Du einen PUNKT matchen, musst Du ihn mit einem \ escapen. Aber wie gesagt, er gehört hier nicht hin.
- Die Gruppe am Ende ist eine assertion-Group und würde sicherstellen, dass da nicht `js-disabledino' steht. Das ist ok, geht aber einfacher.
Was Du gebraucht hättest, wäre /\bjs-enabled\b/g
. \b steht für Word Boundary, damit findet man Worte.
Zum Testen und Verstehen von Regex Mustern empfehle ich Dir https://regex101.com/. Der unterstützt die Regex-Formate verschiedener Sprachen (links einstellen). Du kannst probieren, ob dein Pattern das findest, was Du finden möchtest, und er erklärt Dir dein Pattern. Damit kannst Du abgleichen, ob dein Verständnis des Patterns mit dem übereinstimmt, was die Regex-Engine herausliest.
</exkurs>
Rolf
sumpsi - posui - clusi