DOMTokenList#
DOMTokenList.remove()#
Metoda remove()
usuwa przekazane słowa z uporządkowanego zestawu słów skojarzonego z danym zestawem słów DOM, jeśli się w nim znajdują.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
domTokenList.remove(tokens...);
gdzie poszczególne człony oznaczają:
- domTokenList - zestaw słów DOM będący obiektem kontekstu.
- tokens - łańcuchy znakowe reprezentujące słowa, które będą usuwane z uporządkowanego zestawu słów. Żaden z nich nie może być pusty ani zawierać znaków spacji. Separatorem między łańcuchami jest przecinek. Wielkość znaków ma znaczenie.
Algorytm wywołania metody remove(tokens)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
Dla każdego (for each) słowa token w tokens wykonaj poniższe podkroki:
- Jeśli token jest pustym łańcuchem znakowym, to zrzuć wyjątek
"SyntaxError"
. - Jeśli token zawiera jakiekolwiek białe znaki ASCII, to zrzuć wyjątek
"InvalidCharacterError"
.
- Jeśli token jest pustym łańcuchem znakowym, to zrzuć wyjątek
- Dla każdego (for each) token w tokens usuń token z uporządkowanego zestawu słów skojarzonego z obiektem kontekstu.
- Uruchom kroki aktualizacji.
Wywołanie metody remove()
będzie automatycznie aktualizowało powiązany z zestawem słów DOM atrybut, przez co jego oryginalna zawartość (łańcuch znakowy) może ulec zmianie, nawet w sytuacji całkowitego pominięcia argumentu. Przekazanie wielu argumentów do metody utworzy jeden zapis zmian w obserwatorze zmian.
Przy usuwaniu pojedynczego słowa z uporządkowanego zestawu słów alternatywnie można skorzystać z podobnie działającej metody DOMTokenList.toggle()
.
Prosty przykład:
<script>
function showTokens(set){
return Array.prototype.slice.call(set).join(" ");
}
var html = document.documentElement; // referencja do elementu html
document.write(html.classList.constructor); // function DOMTokenList() { [native code] }
document.write("<br>");
document.write(html.classList.length); // 0
document.write("<br><br>");
html.className = "Test1 Test2 Test3"; // ustawiamy wartość atrybutu class
document.write(showTokens(html.classList)); // Test1 Test2 Test3
document.write("<br>");
document.write(html.classList.length); // 3
document.write("<br><br>");
html.classList.remove("Test1", "Test2"); // usuwamy konkretne słowa
document.write(showTokens(html.classList)); // Test3
document.write("<br>");
document.write(html.classList.length); // 1
document.write("<br><br>");
html.classList.remove("Test2", "Test3"); // usuwamy konkretne słowa
document.write(showTokens(html.classList)); // "" - pusty łańcuch znakowy
document.write("<br>");
document.write(html.classList.length); // 0
document.write("<br><br>");
try{ // Usuwamy pusty łańcuch znakowy z uporządkowanego zestawu słów
html.classList.remove("");
}
catch(e){
document.write("Przekazanie do metody remove() pustego łańcuch znakowego zrzuca błąd:" + "<br>");
document.write(e); // opis zależny od przeglądarki
document.write("<br>");
document.write(e.constructor); // function DOMException() { [native code] }
}
</script>
Na chwilę obecną jedynie przeglądarki Firefox i Chrome obsługują metodę remove()
zgodnie z wymaganiami specyfikacji DOM4. W pozostałych programach nie można przekazywać wielu argumentów do metody, gdyż brany pod uwagę jest tylko pierwszy z nich, a także całkowicie ich pomijać, bo zaowocuje to zrzuceniem błędu.
Metoda remove()
pojawia się dopiero w specyfikacji DOM4.
Składnia Web IDL#
interface DOMTokenList { void remove(DOMString... tokens); }