Wenn Sie keine Bibliothek verwenden, müssen Sie möglicherweise eine eigene Funktion wie diese erstellen.
function addClass(id,new_class){
var i,n=0;
new_class=new_class.split(",");
for(i=0;i<new_class.length;i++){
if((" "+document.getElementById(id).className+" ").indexOf(" "+new_class[i]+" ")==-1){
document.getElementById(id).className+=" "+new_class[i];
n++;
}
}
return n;
}
Verwendung
<div id="changeme" class="big red"></div>
<button onclick="addClass('changeme', 'round')">Add a class</button>
Moderne Browser verfügen über ein `classList`-Attribut für DOM-Elemente.
Es gibt auch eine Korrektur für IE 8+, weitere Informationen hier: developer.mozilla.org/en/DOM/element.classList
Außerdem ist es schlechte Praxis, JavaScript Inline mit HTML-Elementen zu verwenden; die Konvention ist, es über einen Event-Handler anzuhängen.
Dies könnte eine mögliche Alternative sein.
Entschuldigung, es gibt einen kleinen Tippfehler in meinem Code.
Außerdem würde dies wie folgt ausgeführt:
@Liam: Toller Code! Habe ihn leicht angepasst, indem ich eine Toggle-Funktion hinzugefügt habe. So kann ich Klassen hinzufügen/entfernen. In meinem Fall, um die Geschwister-Elemente in einer Tabelle ein- und auszublenden.
Dieses Snippet geht davon aus, dass ein U+0020 Leerzeichen zur Trennung von Klassennamen verwendet wird. Das würde wahrscheinlich in den meisten Situationen funktionieren, aber es ist wichtig zu beachten, dass es mehr als nur ein Leerzeichen in HTML gibt.
@an die, denen es nicht gefallen hat
benutzen Sie es einfach nicht. Niemand zwingt Sie dazu.
Ich halte es für ein großartiges Snippet. Die Suche mit „“+wort+”“ ist reine Genialität, das verhindert völlig jede Art von unerwarteten Ergebnissen.
Ich liebe diese Website, ich hätte wirklich nicht gedacht, dass sie mein Snippet veröffentlichen.
Sie haben nicht erklärt, wofür das „return n;“ gut ist.
es dient nur dazu, zu wissen, wie viele Klassen erfolgreich hinzugefügt wurden. Diese Option war für mich praktisch (und wenn jemand sie wirklich nicht nutzen möchte, dann löschen Sie diese Zeile einfach)
Leute, was ist, wenn ich diese Klassen automatisch entfernen möchte, wenn ich auf einem anderen Element eine Klasse hinzufüge?