CharacterData#
CharacterData.substringData()#
Metoda substringData()
pozwala wydobyć konkretną część znaków z danych tekstowych skojarzonych z danym węzłem znakowym. Metoda w żaden sposób nie modyfikuje pierwotnych danych tekstowych.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var data_part = node.substringData(offset, count);
gdzie poszczególne człony oznaczają:
- data_part - łańcuch znakowy reprezentujący zwróconą częścią z danych tekstowych.
- 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 wydobywana z danych tekstowych.
- count - liczba całkowita określająca ilość wydobywanych znaków z danych tekstowych. Wartość
0
oznacza brak wydobywania jakiegokolwiek znaku.
Algorytm wywołania metody substringData(offset, count)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Zwróć wynik wydobywania części danych tekstowych z węzłem będącym obiektem kontekstu, przesunięciem wskazywanym przez offset oraz licznikiem wskazywanym przez count.
Warto nadmienić, że 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.
Przekazując do metody substringData()
wartość 0
oraz wartości z właściwości CharacterData.length
danego węzła znakowego uzyskamy identyczne zachowanie, jak w przypadku odczytywania danych tekstowych za pomocą właściwości CharacterData.data
, Node.nodeValue
i Node.textContent
.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<script>
function getData(offset, count){
var result = document.getElementById("info");
try{
var textNode = document.getElementById("tekst").firstChild;
var subData = textNode.substringData(offset, count);
result.innerHTML = subData;
result.innerHTML += "<br>" + typeof subData;
result.innerHTML += "<br>" + subData.length;
}
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 wydobyć pewną część danych tekstowych w testowym akapicie.</p>
<input type="button" value="substringData('0', '0')" onclick="getData('0', '0')">
<input type="button" value="substringData('0', '5')" onclick="getData('0', '5')">
<input type="button" value="substringData('5', '10')" onclick="getData('5', '10')">
<input type="button" value="substringData('0', '50')" onclick="getData('0', '50')">
<input type="button" value="substringData('50', '0')" onclick="getData('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 { DOMString substringData(unsigned long offset, unsigned long count); }