Document#
Document.createComment()#
Metoda createComment()
tworzy nowy węzeł typu Comment
(pochodna węzłów znakowych) z określonymi danymi tekstowymi, którego właścicielem jest dany dokument.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var new_comment = document.createComment(data);
gdzie poszczególne człony oznaczają:
- new_comment - referencja do nowego węzła komentarzowego.
- document - dokument będący obiektem kontekstu.
- data - łańcuch znakowy reprezentujący dane tekstowe dla nowego węzła komentarzowego.
Algorytm wywołania metody createComment(data)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Zwróć nowy węzeł typu
Comment
z danymi tekstowymi wskazywanymi przez data, którego właścicielem jest obiekt kontekstu.
Metoda nie weryfikuje poprawności przekazanych danych tekstowych wymaganych dla węzłów komentarzowych w przypadku XML-a, np. pod względem dopasowania do wzorca Char
lub unikania dwóch sąsiadujących myślników czy też końcówki z myślnikiem.
Nowy węzeł komentarzowy zwracany przez metodę createComment()
nie jest częścią danego drzewa dokumentu dopóki nie zostanie dodany do innego węzła należącego do drzewa dokumentu. Dlatego nowy węzł komentarzowy nie będzie posiadał rodzica (wartość null
), aczkolwiek dalej posiada jakiegoś właściciela.
Obiekt zwracany przez metodę createComment()
implementuje interfejs Comment, dlatego ma dostęp do wszystkich poleceń z tego interfejsu (oraz z kolejnych interfejsów w łańcuchu dziedziczenia).
Alternatywnie można skorzystać z podobnie działającego konstruktora new Comment()
.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<script>
function addComment(data){
var p = document.getElementById("tekst");
var info = document.getElementById("info");
var newComment = document.createComment(data);
p.appendChild(newComment);
var comments = p.childNodes.length - 1;
info.innerHTML = "Liczba węzłów komentarzowych w akapicie po kolejnym dodaniu nowego węzła: "
+ comments
+ "<br>" + "Interfejs nowego węzła komentarzowego: " + newComment
+ "<br>" + "Dane tekstowe nowego węzła komentarzowego: " + newComment.data
+ "<br><br>" + "Testowy akapit po serializacji: " + "<br>";
var newText = document.createTextNode("");
newText.data = new XMLSerializer().serializeToString(p);
info.appendChild(newText);
}
</script>
</head>
<body>
<p>Kliknij konkretny przycisk by dodać nowy węzeł komentarzowy do testowego akapitu.</p>
<input type="button" value="createComment(' Test1')" onclick="addComment('Test1')">
<input type="button" value="createComment(' Test2')" onclick="addComment('Test2')">
<input type="button" value="createComment(null)" onclick="addComment(null)">
<input type="button" value="createComment('')" onclick="addComment('')">
<input type="button" value="createComment('-')" onclick="addComment('-')">
<input type="button" value="createComment('--')" onclick="addComment('--')">
<p id="tekst" >Węzeł tekstowy umieszczony w testowym akapicie.</p>
<p style="color: blue;">Szczegółowe informacje o akapicie i nowym węźle komentarzowym:</p>
<p id="info"></p>
</body>
</html>
Składnia Web IDL#
interface Document : Node { [NewObject] Comment createComment(DOMString data); };