CharacterData#
CharacterData.deleteData()#
Metoda deleteData()
usuwa konkretną część znaków z danych tekstowych skojarzonych z danym węzłem znakowym.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
node.deleteData(offset, count);
gdzie poszczególne człony oznaczają:
- node - węzeł znakowy będący obiektem kontekstu.
- offset - liczba całkowita określająca przesunięcie, od którego część danych tekstowych (kolejne znaki) będzie usuwana z danych tekstowych.
- count - liczba całkowita określająca ilość znaków, które zostaną usunięte z danych tekstowych. Wartość
0
oznacz brak kasowania jakiegokolwiek znaku.
Algorytm wywołania metody deleteData(offset, count)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Zwróć wynik zastępowania danych tekstowych z węzłem będącym obiektem kontekstu, przesunięciem wskazywanym przez offset, licznikiem wskazywanym przez count oraz danymi tekstowymi w postaci pustego łańcucha znakowego.
Identyczny efekt uzyskamy poprzez wywołanie metody CharacterData.replaceData(offset, count, data)
z argumentami o następujących wartościach:
- offset - liczba całkowita określająca przesunięcie, od którego część danych tekstowych (kolejne znaki) będzie zastępowana nowymi danymi tekstowymi.
- count - liczbowa całkowita określająca ilość znaków w danych tekstowych, które zostaną zastąpione nowymi danymi tekstowymi.
- data - nowe dane tekstowe w postaci pustego łańcucha znakowego.
Warto nadmienić, że w obu przypadkach argument offset
przekazywany do metody nie może być większy od wartości z właściwości CharacterData.length
danego węzła znakowego, bo zrzucony zostanie błąd.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<script>
function delData(offset, count){
var result = document.getElementById("info");
try{
var cloneText = document.getElementById("tekst").firstChild.cloneNode();
cloneText.deleteData(offset, count);
result.innerHTML = cloneText.data;
}
catch(e){
result.innerHTML = "Przekazanie przesunięcia większego od liczby jednostek kodowych zrzuca błąd:"
result.innerHTML += "<br>" + e; // opis zależny od przeglądarki
result.innerHTML += "<br>" + e.constructor; // function DOMException() { [native code] }
}
}
</script>
</head>
<body>
<p>Kliknij konkretny przycisk by usunąć pewną część danych tekstowych w testowym akapicie.</p>
<input type="button" value="deleteData('0', '0')" onclick="delData('0', '0')">
<input type="button" value="deleteData('0', '5')" onclick="delData('0', '5')">
<input type="button" value="deleteData('5', '10')" onclick="delData('5', '10')">
<input type="button" value="deleteData('0', '50')" onclick="delData('0', '50')">
<input type="button" value="deleteData('50', '0')" onclick="delData('50', '0')">
<p id="tekst" >Węzeł tekstowy umieszczony w testowym akapicie.</p>
<p style="color: blue;">Wynik działania przycisków:</p>
<p id="info"></p>
</body>
</html>
Składnia Web IDL#
interface CharacterData : Node { void deleteData(unsigned long offset, unsigned long count); }
Specyfikacje i inne materiały#
Pasek społecznościowy