--- title: Element.classList slug: Web/API/Element/classList translation_of: Web/API/Element/classList ---
Element.classList jest właściwością tylko do odczytu, która zwraca zbiór live {{domxref("DOMTokenList")}} atrybutów klasy danego elementu.
Używanie classList stanowi wygodną alternatywę uzyskiwania dostępu do listy klas danego elementu w formie skompresowanego stringa poprzez {{domxref("element.className")}}.
const elementClasses = elementNodeReference.classList;
elementClasses to DOMTokenList reprezentujący atrybuty klasy elementNodeReference. Jeśli atrybut klasy nie został określony lub jest pusty, elementClasses.length zwraca 0. Sam w sobie element.classList jest tylko do odczytu, ale można go mimo to modyfikować poprzez stosowanie metod add() i remove().
false, jeśli nie, wówczas dodaje ją i zwraca true.// div jest obiektem odwołującym się do elementu <div> o klasie ="foo bar"
div.classList.remove("foo");
div.classList.add("anotherclass");
// jeśli ustawiona jest widoczność usuwa ją, w przeciwnym wypadku dodaje
div.classList.toggle("visible");
// dodaj/usuń (add/remove) jest widoczne, w zależności od warunku testowego, i mniejsze od 10
div.classList.toggle("visible", i < 10 );
alert(div.classList.contains("foo"));
// dodaj lub usuń złożone klasy
div.classList.add("foo", "bar");
div.classList.remove("foo", "bar");
Wersje Firefoxa wcześniejsze niż 26 nie implementują użycia niektórych argumentów metod dodaj/usuń/przełącz (add/remove/toggle). Zobacz https://bugzilla.mozilla.org/show_bug.cgi?id=814014
// Źródło: https://gist.github.com/k-gun/c2ea7c49edf7b757fe9561ba37cb19ca
;(function() {
// pomocnicy
var regExp = function(name) {
return new RegExp('(^| )'+ name +'( |$)');
};
var forEach = function(list, fn, scope) {
for (var i = 0; i < list.length; i++) {
fn.call(scope, list[i]);
}
};
// obiekt listy klasy z podstawowymi metodami
function ClassList(element) {
this.element = element;
}
ClassList.prototype = {
add: function() {
forEach(arguments, function(name) {
if (!this.contains(name)) {
this.element.className += this.element.className.length > 0 ? ' ' + name : name;
}
}, this);
},
remove: function() {
forEach(arguments, function(name) {
this.element.className =
this.element.className.replace(regExp(name), '');
}, this);
},
toggle: function(name) {
return this.contains(name)
? (this.remove(name), false) : (this.add(name), true);
},
contains: function(name) {
return regExp(name).test(this.element.className);
},
// bonus..
replace: function(oldName, newName) {
this.remove(oldName), this.add(newName);
}
};
// IE8/9, Safari
if (!('classList' in Element.prototype)) {
Object.defineProperty(Element.prototype, 'classList', {
get: function() {
return new ClassList(this);
}
});
}
// replace() wspierane przez pozostałe przeglądarki
if (window.DOMTokenList && DOMTokenList.prototype.replace == null) {
DOMTokenList.prototype.replace = ClassList.prototype.replace;
}
})();
| Specifikacja | Status | Komentarz |
|---|---|---|
| {{SpecName("HTML WHATWG", "dom.html#dom-classlist", "Element.classList")}} | {{Spec2("HTML WHATWG")}} | Note within the HTML specification related to the {{htmlattrxref("class")}} attribute. |
| {{SpecName("DOM WHATWG", "#dom-element-classlist", "Element.classList")}} | {{Spec2("DOM WHATWG")}} | Initial definition |
| {{SpecName("DOM4", "#dom-element-classlist", "Element.classList")}} | {{Spec2("DOM4")}} |
| Cecha | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Zgodność podstawowa | 8 | 12 | {{CompatGeckoDesktop(1.9.2)}} | 10[1] | 11.50 | 5.1 |
toggle() method's second argument |
24 | 12 | {{CompatGeckoDesktop(24)}} | {{CompatNo}}[2] | 15 | 7 |
Multiple arguments for add() & remove() |
28 | 12 | {{CompatGeckoDesktop(26)}} | {{CompatNo}} | 15 | 7 |
replace() |
{{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoDesktop("49")}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
| Cecha | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Wsparcie podstawowe | 3.0 | 12 | {{CompatGeckoMobile(1.9.2)}} | 10[1] | 11.10 | 5.0 |
| toggle method's second argument | 4.4 | 12 | {{CompatGeckoMobile(24)}} | {{CompatNo}}[2] | {{CompatUnknown}} | 7.0 |
multiple arguments for add() & remove() |
4.4 | 12 | {{CompatUnknown}} | {{CompatNo}} | {{CompatUnknown}} | 7.0 |
replace() |
{{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoDesktop("49")}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] Brak wsparcia dla elementów SVG. Zobacz raport w tej kwestii na stronie Microsoftu.
[2] Internet Explorer nigdy tego nie zimplementował. Zobacz raport w tej kwestii na stronie Microsoftu.