15 metod JavaScript do manipulacji DOM dla programistów WWW
Jako programista internetowy często musisz manipulować DOM, model obiektu używany przez przeglądarki określ strukturę logiczną stron internetowych i na podstawie tej struktury renderuj elementy HTML na ekranie.
HTML definiuje domyślna struktura DOM. Jednak w wielu przypadkach możesz chcieć manipulować tym za pomocą JavaScript, zazwyczaj w celu dodaj dodatkowe funkcje na stronę.
W tym poście znajdziesz listę 15 podstawowych metod JavaScript że pomoc w manipulacji DOM. Najprawdopodobniej będziesz często używać tych metod w swoim kodzie, a także wpadniesz na nie w naszych samouczkach JavaScript.
1. querySelector ()
The querySelector ()
metoda zwraca pierwszy element, który pasuje do jednego lub więcej selektorów CSS. Jeśli nie zostanie znalezione żadne dopasowanie, wraca zero
.
Przed querySelector ()
został wprowadzony, programiści powszechnie używali getElementById ()
metoda, która pobiera element z określonym ID
wartość.
Mimo że getElementById ()
jest wciąż użyteczną metodą, ale z nowszą querySelector ()
i querySelectorAll ()
metody, do których mamy prawo elementy docelowe oparte na dowolnym selektorze CSS, dzięki temu mamy większą elastyczność.
Składnia
var ele = document.querySelector (selektor);
ele
- Pierwszy pasujący element lubzero
(jeśli żaden element nie pasuje do selektorów)selektor
- jeden lub więcej selektorów CSS, takich jak„#fooId”
,„.fooClassName”
,„.class1.class2”
, lub„.class1, .class2”
Przykład kodu
W tym przykładzie pierwszy akapit pierwszy paragraf drugi ustęp trzeci Przetestuj w odróżnieniu Pasujące elementy są zwracane jako Poniższy przykład używa tego samego HTML co poprzedni. Jednak w tym przykładzie wszystkie akapity są zaznaczone za pomocą akapit pierwszy paragraf drugi ustęp trzeci Wydarzenia odnoszą się do tego, co dzieje się z elementem HTML, takim jak kliknięcie, ogniskowanie lub ładowanie, na które możemy reagować za pomocą JavaScript. Możemy przypisać funkcje JS do słuchać dla tych wydarzeń w elementach i zrób coś, gdy wydarzenie miało miejsce. Istnieją trzy sposoby przypisz funkcję do określonego zdarzenia. Jeśli Metoda Zatrzymuje propagowanie zdarzeń, tzn. Zapobiega wywoływaniu detektorów zdarzeń dla tego samego typu zdarzenia w przodkach elementu. Aby użyć tej funkcji, możesz użyć 2 składni: Słuchacz jest wywoływany tylko przy pierwszym zdarzeniu, a następnie jest automatycznie odłączany od zdarzenia i nie będzie już przez niego uruchamiany. Domyślnej akcji zdarzenia nie można zatrzymać za pomocą metody preventDefault (). W tym przykładzie dodajemy detektor zdarzenia click o nazwie Przypisz The Używa tej samej składni, co powyżej Podążając za przykładem kodu, którego używaliśmy w The Możesz później dodać ten element do strony internetowej, używając innego metody wstawiania DOM, Jak na przykład W poniższym przykładzie możesz utworzyć nowy element akapitu: The Dziecko, które ma zostać wstawione, może być dzieckiem nowo utworzony element, lub już istniejący. W tym drugim przypadku zostanie on przeniesiony z poprzedniej pozycji do pozycji ostatniego dziecka. W tym przykładzie wstawiamy W następującej interaktywnej wersji demonstracyjnej litery z Sprawdź, jak The W tym przykładzie usuwamy The W tym przykładzie element podrzędny Kiedy musisz stworzyć nowy element, który musi być taki sam jak już istniejący element na stronie internetowej możesz po prostu utwórz kopię już istniejącego elementu używając W tym przykładzie tworzymy kopię dla W rezultacie, The Jeśli przywoływany element podrzędny nie istnieje lub przekazujesz go jawnie W tym przykładzie tworzymy nowy To interaktywne demo działa podobnie do naszego poprzedniego demo należącego do The To tworzy a Dlaczego po prostu nie dodamy elementów bezpośrednio do drzewa DOM? Ponieważ wstawianie DOM powoduje zmiany układu, i to jest drogi proces przeglądarki ponieważ wiele następnych wstawień elementów spowoduje więcej zmian układu. Z drugiej strony dodawanie elementów do W tym przykładzie tworzymy wiele wierszy i komórek tabeli za pomocą W rezultacie pięć wierszy - każdy z nich zawierający jedną komórkę z liczbą od 1 do 5 jako treść - zostanie wstawiony do tabeli. Czasami chcesz sprawdź wartości właściwości CSS elementu przed wprowadzeniem jakichkolwiek zmian. Możesz użyć W tym przykładzie otrzymujemy i ostrzegamy obliczone The W tym przykładzie dodajemy The W tym przykładzie ostrzegamy o wartości The W tym przykładzie usuwamy querySelector ()
metoda i jej kolor zmienia się na czerwony.
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'red';
Interaktywne demo
querySelector ()
metoda w poniższej interaktywnej wersji demonstracyjnej. Po prostu wpisz selektor pasujący do selektora znajdującego się w niebieskich polach (np. #trzy
) i kliknij przycisk Wybierz. Zauważ, że jeśli wpiszesz .blok
, tylko jego pierwsza instancja zostanie wybrany.2.
querySelectorAll ()
querySelector ()
zwraca tylko pierwszą instancję wszystkich pasujących elementów, querySelectorAll ()
zwraca wszystkie elementy, które pasują do określonego selektora CSS.Lista węzłów
obiekt, który będzie pustym obiektem, jeśli nie znaleziono pasujących elementów.Składnia
var eles = document.querySelectorAll (selektor);
eles
- ZA Lista węzłów
obiekt ze wszystkimi pasującymi elementami jako wartości właściwości. Obiekt jest pusty, jeśli nie znaleziono żadnych dopasowań.selektor
- jeden lub więcej selektorów CSS, takich jak „#fooId”
, „.fooClassName”
, „.class1.class2”
, lub „.class1, .class2”
Przykład kodu
querySelectorAll ()
, i są niebieskie.
var paragraphs = document.querySelectorAll ('p'); for (var p akapitów) p.style.color = 'niebieski';
3.
addEventListener ()
bla()
jest funkcją niestandardową, możesz ją zarejestrować jako odbiorca zdarzenia kliknięcia (zadzwoń po kliknięciu elementu przycisku) na trzy sposoby:
var btn = document.querySelector ('button'); btn.onclick = foo;
var btn = document.querySelector ('button'); btn.addEventListener („kliknij”, foo);
addEventListener ()
(trzecie rozwiązanie) ma kilku profesjonalistów; jest to najnowszy standard - umożliwiający przypisanie więcej niż jednej funkcji jako detektorów zdarzeń do jednego zdarzenia - i zawiera przydatny zestaw opcji.Składnia
ele.addEventListener (evt, listener, [opcje]);
ele
- Element HTML, którego słuchacz zdarzeń będzie nasłuchiwał.evt
- Celowane wydarzenie.słuchacz
- Zazwyczaj funkcja JavaScript.opcje
- (opcjonalnie) Obiekt z zestawem właściwości boolowskich (wymienionych poniżej).Opcje Co się dzieje, gdy jest ustawione prawdziwe
?zdobyć
ele.addEventListener (evt, listener, true)
ele.addEventListener (evt, listener, capture: true);
pewnego razu
bierny
Przykład kodu
bla
, do Tag HTML.
var btn = document.querySelector ('button'); btn.addEventListener („kliknij”, foo); function foo () alert ('hello');
Interaktywne demo
bla()
niestandardowa funkcja jako odbiorca zdarzeń w jednym z trzech następujących zdarzeń: wkład
, Kliknij
lub myszy
& wyzwalaj wybrane wydarzenie w dolnym polu wprowadzania, najeżdżając, klikając lub wpisując je.4.
removeEventListener ()
removeEventListener ()
metoda odłącza detektor zdarzeń wcześniej dodane za pomocą addEventListener ()
metoda z wydarzenia, którego słucha.Składnia
ele.removeEventListener (evt, listener, [opcje]);
addEventListener ()
metoda (z wyjątkiem pewnego razu
opcja, która jest wykluczona). Opcje są używane do określenia specyficznego detektora do odłączenia.Przykład kodu
addEventListener ()
, tutaj usuwamy detektor zdarzenia click o nazwie bla
od element.
btn.removeEventListener („kliknij”, foo);
5.
createElement ()
createElement ()
metoda tworzy nowy element HTML używając nazwa znacznika HTML do utworzenia, np „p”
lub „div”
.AppendChild ()
(patrz dalej w tym poście).Składnia
document.createElement (tagName);
Nazwa znacznika
- Nazwa znacznika HTML, który chcesz utworzyć. Przykład kodu
var pEle = document.createElement ('p')
6.
appendChild ()
appendChild ()
metoda dodaje element jako ostatnie dziecko do elementu HTML, który wywołuje tę metodę.Składnia
ele.appendChild (childEle)
ele
- Element HTML, do którego childEle
jest dodawany jako ostatnie dziecko.childEle
- Element HTML dodany jako ostatnie dziecko ele
.Przykład kodu
element jest jak dziecko a
appendChild ()
i wyżej wymienione createElement ()
metody.
var div = document.querySelector ('div'); var strong = document.createElement ('strong'); strong.textContent = 'Hello'; div.appendChild (strong);
Interaktywne demo
#za
do #r
są elementami potomnymi elementu # rodzic-jeden
, # rodzic-dwa
, i # rodzic-trzy
selektory id.appendChild ()
metoda działa wpisując jedną nazwę rodzica i jedną nazwę selektora podrzędnego w pola wejściowe poniżej. Możesz również wybrać dzieci należące do innego rodzica.7.
removeChild ()
removeChild ()
metoda usuwa określony element podrzędny z elementu HTML, który wywołuje tę metodę.Składnia
ele.removeChild (childEle)
ele
- Element macierzysty childEle
.childEle
- Element potomny ele
.Przykład kodu
element, który dodaliśmy jako dziecko do
appendChild ()
metoda. div.removeChild (strong);
8.
replaceChild ()
replaceChild ()
metoda zamienia element potomny na inny należący do elementu rodzica, który wywołuje tę metodę.Składnia
ele.replaceChild (newChildEle, oldChileEle)
ele
- Element macierzysty, którego dzieci mają zostać wymienione.newChildEle
- Element potomny ele
który zastąpi oldChildEle
.oldChildEle
- Element potomny ele
, który zostanie zastąpiony przez newChildEle
.Przykład kodu
należący do
etykietka.
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.replaceChild (em, strong);
9.
cloneNode ()
cloneNode ()
metoda.Składnia
var dupeEle = ele.cloneNode ([deep])
dupeEle
- Kopia ele
element.ele
- Element HTML do skopiowania.głęboki
- (opcjonalnie) Wartość logiczna. Jeśli jest ustawiony na prawdziwe
, dupeEle
będzie miał wszystkie elementy potomne ele
ma, jeśli jest ustawiony na fałszywy
zostanie sklonowany bez dzieci.Przykład kodu
element z
cloneNode ()
, następnie dodajemy go do appendChild ()
metoda. elementy, oba z
dzień dobry
ciąg jako treść.
var strong = document.querySelector ('strong'); var copy = strong.cloneNode (true); var div = document.querySelector ('div'); div.appendChild (kopia);
10.
insertBefore ()
insertBefore ()
metoda dodaje określony element podrzędny przed innym elementem podrzędnym. Metoda jest wywoływana przez element nadrzędny.zero
w jego miejsce dodaje się element potomny, który ma zostać wstawiony jako ostatnie dziecko rodzica (podobny do appendChild ()
).Składnia
ele.insertBefore (newEle, refEle);
ele
- Element macierzysty.newEle
- Nowy element HTML do wstawienia.refEle
- Element potomny ele
przed którym newEle
zostanie wstawiony.Przykład kodu
element z tekstem wewnątrz i dodaj go przed
element wewnątrz
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.insertBefore (em, strong);
Interaktywne demo
appendChild ()
metoda. Tutaj wystarczy wpisać selektory id dwóch elementów potomnych (z #za
do #r
) w polach wejściowych i możesz zobaczyć, jak insertBefore ()
metoda przenosi pierwsze określone dziecko przed drugi.11.
createDocumentFragment ()
createDocumentFragment ()
metoda może nie być tak dobrze znana jak pozostałe na tej liście, niemniej jednak jest ważna, zwłaszcza jeśli chcesz wstawiaj wiele elementów luzem, takie jak dodawanie wielu wierszy do tabeli.Fragment dokumentu
obiekt, co zasadniczo jest węzeł DOM, który nie jest częścią drzewa DOM. To jest jak bufor, w którym możemy dodawać i przechowywać inne elementy (np. Wiele wierszy), przed dodaniem ich do żądanego węzła w drzewie DOM (np. Do tabeli).Fragment dokumentu
obiekt nie powoduje żadnych zmian układu, więc możesz dodać tyle elementów, ile chcesz, zanim przekażesz je do drzewa DOM, powodując zmianę układu tylko w tym momencie.Składnia
document.createDocumentFragment ()
Przykład kodu
createElement ()
metoda, a następnie dodaj je do Fragment dokumentu
obiekt, w końcu dodaj ten fragment dokumentu do HTML używając
appendChild ()
metoda.
var table = document.querySelector ("tabela"); var df = document.createDocumentFragment (); for (var i = 0; i<5; i++) var td = document.createElement("td"); var tr = document.createElement("tr"); td.textContent = i; tr.appendChild(td) df.appendChild(tr); table.appendChild(df);
12.
getComputedStyle ()
ele.style
własność zrobić to samo, jednak getComputedStyle ()
właśnie w tym celu została wykonana metoda zwraca wartości obliczone tylko do odczytu wszystkich właściwości CSS określonego elementu HTML.Składnia
var style = getComputedStyle (ele, [pseudoEle])
styl
- ZA Deklaracja CSSStyle
obiekt zwrócony przez metodę. Przechowuje wszystkie właściwości CSS i ich wartości ele
element.ele
- Element HTML, z którego pobierane są wartości właściwości CSS.pseudoEle
- (opcjonalnie) Łańcuch reprezentujący pseudoelement (na przykład, ':po'
). Jeśli jest to wspomniane, to właściwości CSS określonego pseudoelementu powiązanego z ele
będzie zwrócony.Przykład kodu
szerokość
wartość a getComputedStyle ()
metoda.
var style = getComputedStyle (document.querySelector ('div')); alert (style.width);
13.
setAttribute ()
setAttribute ()
metoda dodaje nowy atrybut do elementu HTML lub aktualizuje wartość atrybutu, który już istnieje.Składnia
ele.setAttribute (nazwa, wartość);
ele
- Element HTML, do którego dodawany jest atrybut, lub którego atrybut jest aktualizowany.imię
- Nazwa atrybutu.wartość
- Wartość atrybutu.Przykład kodu
zadowalający
przypisz do a setAttribute ()
metoda, która zmieni zawartość edytowalną. var div = document.querySelector ('div'); div.setAttribute („contenteditable”, ”)
14.
getAttribute ()
getAttribute ()
metoda zwraca wartość określonego atrybutu należący do pewnego elementu HTML.Składnia
ele.getAttribute (nazwa);
ele
- Element HTML, którego atrybut jest wymagany.imię
- Nazwa atrybutu.Przykład kodu
zadowalający
atrybut należący do getAttribute ()
metoda. var div = document.querySelector ('div'); alert (div.getAttribute („contenteditable”))
15.
removeAttribute ()
removeAttribute ()
metoda usuwa dany atrybut konkretnego elementu HTML.Składnia
ele.removeAttribute (nazwa);
ele
- Element HTML, którego atrybut ma zostać usunięty.imię
- Nazwa atrybutu.Przykład kodu
zadowalający
atrybut z var div = document.querySelector ('div'); div.removeAttribute ('contenteditable');