15 JavaScript-metoder för DOM-manipulation för webbutvecklare
Som webbutvecklare behöver du ofta manipulera DOM, objektmodellen som används av webbläsare till Ange den logiska strukturen av webbsidor, och baserat på denna struktur till gör HTML-element på skärmen.
HTML definierar standard DOM-struktur. Men i många fall kanske du vill manipulera detta med JavaScript, vanligtvis för att lägg till extra funktioner till en webbplats.
I det här inlägget hittar du en lista över 15 grundläggande JavaScript-metoder den där hjälp DOM manipulation. Du brukar använda dessa metoder ofta i din kod, och du kommer också att stöta på dem i våra JavaScript-handledning.
1. querySelector ()
De querySelector ()
metod returnerar det första elementet som matchar en eller flera CSS-väljare. Om ingen matchning hittas returneras den null
.
Innan querySelector ()
introducerades, använde utvecklarna allmänt getElementById ()
metod som hämtar ett element med en specificerad id
värde.
Fastän getElementById ()
är fortfarande en användbar metod, men med de nyare querySelector ()
och querySelectorAll ()
metoder vi är lediga till målelement baserade på någon CSS-väljare, Vi har därmed större flexibilitet.
Syntax
var ele = document.querySelector (selector);
ele
- Första matchande element ellernull
(om inget element matchar selektorerna)väljare
- en eller flera CSS-selektorer, såsom"#FooId"
,".FooClassName"
," .Class1.class2"
, eller".class1, .class2"
Kod Exempel
I det här exemplet är den första stycke ett stycke två stycke tre Testa Till skillnad från De matchande elementen returneras som en Exemplet nedan använder samma HTML som den föregående. I det här exemplet väljs alla stycken med stycke ett stycke två stycke tre evenemang hänvisa till vad som händer med ett HTML-element, till exempel att klicka, fokusera eller ladda, som vi kan reagera med JavaScript. Vi kan tilldela JS-funktioner till lyssna för dessa händelser i element och gör något när händelsen hade inträffat. Det finns tre sätt du kan Tilldela en funktion till en viss händelse. Om Metoden Stoppar händelsebubblingen, det vill säga förhindrar att någon händelsehörare kallas för samma händelse typ i elementets förfäder. För att använda den här funktionen kan du använda 2 syntaxer: Listener kallas bara första gången händelsen inträffar, då avlägsnas den automatiskt från händelsen och kommer inte att utlösas av den längre. Standardåtgärden för händelsen kan inte stoppas med metoden preventDefault (). I det här exemplet lägger vi till en klickhändelselysare som heter Tilldela De Använder samma syntax som ovan nämnda Följande kodexempel vi använde vid De Du kan senare lägga till detta element på webbsidan med hjälp av olika metoder för DOM-införing, som Med följande exempel kan du skapa ett nytt styckeelement: De Barnet som ska införas kan vara antingen a nyskapade elementet, eller en redan befintlig. I det senare fallet flyttas det från sitt tidigare läge till det sista barnets position. I det här exemplet lägger vi in en I följande interaktiva demo, bokstäver från Kolla in hur De I det här exemplet tar vi bort De I detta exempel barnelementet När du måste skapa ett nytt element som behöver vara samma som ett redan existerande element På webbsidan kan du helt enkelt skapa en kopia av det redan existerande elementet använda I det här exemplet skapar vi en kopia för Som ett resultat, De Om det refererade barnelementet inte existerar eller du passerar explicit I det här exemplet skapar vi en ny Denna interaktiva demo fungerar på samma sätt som vår tidigare demo som tillhör De Det skapar en Varför lägger vi inte till ämnen direkt till DOM-trädet? Eftersom DOM-infogning orsakar layoutändringar, och det är en dyra webbläsarprocess eftersom flera följande elementinsatser kommer att leda till fler layoutändringar. Å andra sidan lägger du till element i a I det här exemplet skapar vi flera tabellrader och celler med Som ett resultat kommer fem rader - var och en som innehåller en cell med ett tal från 1 till 5 som innehåll - att sättas in i bordet. Ibland vill du kolla CSS-egenskapsvärdena av ett element innan du gör några ändringar. Du kan använda I det här exemplet får vi och varnar den beräknade De I det här exemplet lägger vi till De I det här exemplet varnar vi värdet på De I det här exemplet tar vi bort querySelector ()
Metoden och dess färg ändras till rött.
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'red';
Interaktiv demo
querySelector ()
metod i följande interaktiva demo. Skriv bara en väljare som matchar de som du hittar inom de blå rutorna (t.ex.. #tre
) och klicka på knappen Välj. Observera att om du skriver .blockera
, bara sin första instans kommer att väljas.2.
querySelectorAll ()
querySelector ()
som returnerar endast första instans av alla matchande element, querySelectorAll ()
returnerar alla element som matchar den angivna CSS-väljaren.nodelist
objekt som kommer att bli ett tomt objekt om inga matchande element hittas.Syntax
var eles = document.querySelectorAll (selector);
eles
- en nodelist
objekt med alla matchande element som egenskapsvärden. Objektet är tomt om inga träffar hittades.väljare
- en eller flera CSS-selektorer, såsom "#FooId"
, ".FooClassName"
, " .Class1.class2"
, eller ".class1, .class2"
Kod Exempel
querySelectorAll ()
, och är färgade blåa.
var stycken = document.querySelectorAll ('p'); för (var p av stycken) p.style.color = 'blue';
3.
addeventlistener ()
foo ()
är en anpassad funktion, du kan registrera den som en klickhändelse lyssnare (kalla det när knappelementet är klickat) på tre sätt:
var btn = document.querySelector ('button'); btn.onclick = foo;
var btn = document.querySelector ('button'); btn.addEventListener ('klick', foo);
addeventlistener ()
(den tredje lösningen) har några proffs; det är den senaste standarden - tillåter överlåtelse av mer än en funktion som händelsehörare till ett evenemang - och levereras med en användbar uppsättning alternativ.Syntax
ele.addEventListener (evt, lyssnare, [alternativ]);
ele
- Det HTML-element som händelseläsenaren lyssnar på.evt
- Den riktade händelsen.lyssnare
- Vanligtvis en JavaScript-funktion.alternativ
- (valfritt) Ett objekt med en uppsättning boolesiska egenskaper (listad nedan).alternativ Vad händer när det är inställt på Sann
?fånga
ele.addEventListener (evt, lyssnare, sant)
ele.addEventListener (evt, lyssnare, capture: true);
en gång
passiv
Kod Exempel
foo
, till HTML-tagg.
var btn = document.querySelector ('button'); btn.addEventListener ( 'klick', foo); funktion foo () alert ('hej');
Interaktiv demo
foo ()
anpassad funktion som händelse lyssnare till någon av de tre följande händelserna: inmatning
, klick
eller mouseover
& aktivera den valda händelsen i det nedre inmatningsfältet genom att sväva, klicka eller skriva in det.4.
removeEventListener ()
removeEventListener ()
metod avlyssnar en händelse lyssnare tidigare tillsatt med addeventlistener ()
metod från det evenemang den lyssnar på.Syntax
ele.removeEventListener (evt, lyssnare, [alternativ]);
addeventlistener ()
metod (med undantag för en gång
alternativ som är uteslutet). Alternativen brukar vara mycket specifika för att identifiera lyssnaren för att vara fristående.Kod Exempel
addeventlistener ()
, här avlägsnar vi klickhändelsesläraren som heter foo
från element.
btn.removeEventListener ( 'klick', foo);
5.
create ()
create ()
metod skapar ett nytt HTML-element använda namnet på HTML-taggen att skapas, t.ex. 'P'
eller 'Div'
.AppendChild ()
(se senare i detta inlägg).Syntax
document.createElement (tagname);
taggnamn
- Namnet på HTML-taggen du vill skapa. Kod Exempel
var pEle = document.createElement ('p')
6.
appendChild ()
appendChild ()
metod lägger till ett element som sista barnet till HTML-elementet som anropar den här metoden.Syntax
ele.appendChild (childEle)
ele
- HTML-elementet till vilket childEle
läggs till som sitt sista barn.childEle
- HTML-elementet har lagts till som det sista barnet av ele
.Kod Exempel
element är som barn av a
appendChild ()
och ovan nämnda create ()
metoder.
var div = document.querySelector ('div'); var strong = document.createElement ('strong'); strong.textContent = 'Hej'; div.appendChild (stark);
Interaktiv demo
#en
till #R
är barnets element i # Förälder-en
, # Förälder-två
, och # Förälder-tre
id selectors.appendChild ()
Metoden fungerar av skriver ett förälder och ett barns väljarnamn i inmatningsfälten nedan. Du kan också välja barn som tillhör en annan förälder.7.
removeChild ()
removeChild ()
metod tar bort ett visst barnelement från HTML-elementet som kallar den här metoden.Syntax
ele.removeChild (childEle)
ele
- Föräldraelementet i childEle
.childEle
- Barnelementet i ele
.Kod Exempel
element som vi lagt till som barn till
appendChild ()
metod. div.removeChild (stark);
8.
replaceChild ()
replaceChild ()
metod ersätter ett barnelement med en annan som hör till moderelementet som kallar denna metod.Syntax
ele.replaceChild (newChildEle, oldChileEle)
ele
- Föräldraelement som barn ska ersättas med.newChildEle
- Barnelement av ele
som kommer att ersätta oldChildEle
.oldChildEle
- Barnelement av ele
, som kommer att ersättas med newChildEle
.Kod Exempel
tillhör
märka.
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = "hej"; div.replaceChild (em, stark);
9.
cloneNode ()
cloneNode ()
metod.Syntax
Var dupeEle = ele.cloneNode ([deep])
dupeEle
- Kopia av ele
element.ele
- HTML-elementet som ska kopieras.djup
- (valfritt) Ett booleskt värde. Om den är inställd på Sann
, dupeEle
kommer att ha alla barnelementen ele
har, om det är inställt på falsk
det kommer att klonas utan sina barn.Kod Exempel
element med
cloneNode ()
, då lägger vi till det i appendChild ()
metod. element, båda med
Hej
sträng som innehåll.
var strong = document.querySelector ('strong'); var kopia = strong.cloneNode (true); var div = document.querySelector ('div'); div.appendChild (kopiera);
10.
insert ()
insert ()
metod lägger till ett specificerat barnelement innan ett annat barnelement. Metoden kallas av moderelementet.null
I sin plats läggs det barnelement som ska införas som moderns sista barn (Liknande appendChild ()
).Syntax
ele.insertBefore (newEle, refEle);
ele
- Föräldraelement.newEle
- Nytt HTML-element som ska införas.refEle
- Ett barnelement av ele
för vilken newEle
kommer att införas.Kod Exempel
element med lite text inuti, och lägg till den innan de
element inuti
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = "hej"; div.insertBefore (em, stark);
Interaktiv demo
appendChild ()
metod. Här behöver du bara skriva id-väljarna av tvåbarnselement (från #en
till #R
) i inmatningsrutorna, och du kan se hur insert ()
Metoden flyttar det första angivna barnet innan den andra.11.
createDocumentFragment ()
createDocumentFragment ()
Metoden kanske inte är så känd som de andra i den här listan, men det är ändå en viktig, speciellt om du vill sätt in flera delar i bulk, till exempel att lägga till flera rader i en tabell.DocumentFragment
objekt, vilket i huvudsak är en DOM-nod som inte ingår i DOM-trädet. Det är som en buffert där vi kan lägga till och lagra andra element (t ex flera rader) först innan du lägger till dem i önskad nod i DOM-trädet (t ex till en tabell).DocumentFragment
objekt orsakar inga layoutändringar, så du kan lägga till så många element till det som du vill innan du skickar dem till DOM-trädet, vilket orsakar en layoutändring endast vid denna punkt.Syntax
document.createDocumentFragment ()
Kod Exempel
create ()
metod, lägg sedan till dem i en DocumentFragment
objekt, lägg till det dokumentfragmentet till en HTML använda
appendChild ()
metod.
var tabell = document.querySelector ("table"); var df = document.createDocumentFragment (); för (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
egendom att göra detsamma, men getComputedStyle ()
Metoden har gjorts bara för detta ändamål, det returnerar de endast beräknade värdena av alla CSS-egenskaper hos ett angivet HTML-element.Syntax
var style = getComputedStyle (ele, [pseudoEle])
stil
- en CSSStyleDeclaration
objekt returnerat av metoden. Den innehåller alla CSS egenskaper och deras värden av ele
element.ele
- HTML-elementet som CSS-egenskapsvärden hämtas från.pseudoEle
- (valfritt) En sträng som representerar ett pseudoelement (till exempel, ':efter'
). Om detta nämns, då CSS-egenskaperna hos det angivna pseudo-elementet som är associerade med ele
kommer att returneras.Kod Exempel
bredd
värdet av a getComputedStyle ()
metod.
var style = getComputedStyle (document.querySelector ('div')); alert (style.width);
13.
setAttribute ()
setAttribute ()
metod heller lägger till ett nytt attribut till ett HTML-element eller uppdaterar värdet av ett attribut som redan existerar.Syntax
ele.setAttribute (namn, värde);
ele
- HTML-elementet som ett attribut läggs till, eller vilket attribut är uppdaterat.namn
- Attributets namn.värde
- Värdet på attributet.Kod Exempel
content
attribut till a setAttribute ()
metod som gör att innehållet kan redigeras. var div = document.querySelector ('div'); div.setAttribute ( 'content', ")
14.
getAttribute ()
getAttribute ()
metod returnerar värdet för ett specificerat attribut tillhör ett visst HTML-element.Syntax
ele.getAttribute (namn);
ele
- HTML-elementet av vilket attribut begärs.namn
- Attributets namn.Kod Exempel
content
attribut som tillhör getAttribute ()
metod. var div = document.querySelector ('div'); alert (div.getAttribute ( 'content'))
15.
removeAttribute ()
removeAttribute ()
metod tar bort ett givet attribut av ett specifikt HTML-element.Syntax
ele.removeAttribute (namn);
ele
- HTML-elementet av vilket attribut ska avlägsnas.namn
- Attributets namn.Kod Exempel
content
attribut från var div = document.querySelector ('div'); div.removeAttribute ( 'content');