15 JavaScript-metoder for DOM-manipulering for webutviklere
Som webutvikler må du ofte manipulere DOM, objektmodellen som brukes av nettlesere til spesifiser den logiske strukturen av nettsider, og basert på denne strukturen til gjengi HTML-elementer på skjermen.
HTML definerer standard DOM-struktur. Men i mange tilfeller vil du kanskje manipulere dette med JavaScript, vanligvis for å legg til ekstra funksjonalitet til et nettsted.
I dette innlegget finner du en liste over 15 grunnleggende JavaScript-metoder at hjelp DOM manipulasjon. Du vil sannsynligvis bruke disse metodene ofte i koden din, og du vil også støte på dem i våre JavaScript-opplæringsprogrammer.
1. querySelector ()
De querySelector ()
metode returnerer det første elementet som matcher en eller flere CSS-valgere. Hvis ingen match er funnet, kommer den tilbake null
.
Før querySelector ()
ble introdusert, utviklere brukte mye getElementById ()
metode som henter et element med en spesifisert id
verdi.
Selv om getElementById ()
er fortsatt en nyttig metode, men med nyere querySelector ()
og querySelectorAll ()
metoder vi er fri til målelementer basert på hvilken som helst CSS-väljare, dermed har vi mer fleksibilitet.
syntax
var ele = document.querySelector (selector);
ele
- Første matchende element ellernull
(hvis ingen element passer til selektoren)velger
- en eller flere CSS-selektorer, for eksempel"#FooId"
,".FooClassName"
," .Class1.class2"
, eller".class1, .class2"
Kodeeksempel
I dette eksemplet er den første første ledd avsnitt to tredje ledd Test I motsetning til De matchende elementene returneres som en Eksempelet nedenfor bruker samme HTML som den forrige. Men i dette eksemplet velges alle avsnitt med første ledd avsnitt to tredje ledd arrangementer se hva som skjer med et HTML-element, for eksempel å klikke, fokusere eller laste, som vi kan reagere med JavaScript. Vi kan tilordne JS-funksjoner til lytte for disse hendelsene i elementene og gjør noe når hendelsen hadde oppstått. Det er tre måter du kan tilordne en funksjon til en bestemt hendelse. Hvis Metoden Stopper hendelsen som bobler, dvs. forhindrer at noen hendelselyttere kalles for samme hendelsestype i elementets forfedre. For å bruke denne funksjonen kan du bruke 2 syntakser: Listener kalles bare første gang hendelsen skjer, da blir det automatisk løsrevet fra arrangementet, og vil ikke bli utløst av det lenger. Standardhandling av hendelsen kan ikke stoppes med metoden preventDefault (). I dette eksemplet legger vi til en klikkhendelselytter som heter Tilordne De Bruker samme syntaks som nevnt ovenfor Følgende kodeeksempel vi brukte på De Du kan senere legge til dette elementet på nettsiden ved hjelp av forskjellige metoder for DOM-innføring, som for eksempel Med følgende eksempel kan du opprette et nytt avsnitt: De Barnet som skal settes inn, kan enten være a nylig opprettet element, eller en allerede eksisterende. I sistnevnte tilfelle vil det bli flyttet fra sin tidligere posisjon til posisjonen til det siste barnet. I dette eksemplet legger vi inn en I følgende interaktive demo, bokstaver fra Sjekk ut hvordan De I dette eksemplet fjerner vi De I dette eksemplet er barnelementet Når du må opprette et nytt element som må være det samme som et allerede eksisterende element På nettsiden kan du enkelt lag en kopi av det eksisterende elementet bruker I dette eksemplet lager vi en kopi for Som et resultat, De Hvis det refererte barnelementet ikke eksisterer eller du sender eksplisitt I dette eksempelet oppretter vi en ny Denne interaktive demoen fungerer på samme måte som vår tidligere demo som tilhører De Den skaper en Hvorfor legger vi ikke bare elementer direkte til DOM-treet? Fordi DOM-innføring forårsaker layoutendringer, og det er en dyr nettleserprosess siden flere påfølgende elementinnsatser vil føre til flere layoutendringer. På den annen side legger du til elementer til a I dette eksempelet oppretter vi flere tabellrader og celler med Som et resultat vil fem rader - hver av dem som inneholder en celle med et tall fra 1 til 5 som innhold - bli satt inn i bordet. Noen ganger vil du sjekk CSS-egenskapsverdiene av et element før du foretar endringer. Du kan bruke I dette eksemplet får vi og varsler den beregnede De I dette eksemplet legger vi til De I dette eksemplet varsler vi verdien av De I dette eksemplet fjerner vi querySelector ()
metode og fargen er endret til rødt.
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'rød';
Interaktiv demo
querySelector ()
metode i følgende interaktive demo. Skriv bare en velg som passer til de du finner i de blå boksene (f.eks. #tre
), og klikk på Velg-knappen. Merk at hvis du skriver inn .blokkere
, bare sin første instans vil bli valgt.2.
querySelectorAll ()
querySelector ()
som returnerer bare første forekomst av alle matchende elementer, querySelectorAll ()
returnerer alle elementene som samsvarer med den angitte CSS-väljeren.NodeList
objekt som vil være en tom gjenstand hvis det ikke finnes noen matchende elementer.syntax
var eles = document.querySelectorAll (selector);
eles
- EN NodeList
objekt med alle matchende elementer som eiendomsverdier. Objektet er tomt hvis ingen treff er funnet.velger
- en eller flere CSS-selektorer, for eksempel "#FooId"
, ".FooClassName"
, " .Class1.class2"
, eller ".class1, .class2"
Kodeeksempel
querySelectorAll ()
, og er farget blå.
var avsnitt = document.querySelectorAll ('p'); for (var p av avsnitt) p.style.color = 'blue';
3.
addEventListener ()
foo ()
er en egendefinert funksjon, du kan registrere den som en klikkhendelse lytter (ring det når knappelementet klikkes) på tre måter:
var btn = document.querySelector ('button'); btn.onclick = foo;
var btn = document.querySelector ('button'); btn.addEventListener ('klikk', foo);
addEventListener ()
(den tredje løsningen) har noen fordeler; det er den nyeste standarden - tillater overføring av mer enn én funksjon som hendelselyttere til en hendelse - og leveres med et nyttig sett med alternativer.syntax
ele.addEventListener (evt, lytter, [alternativer]);
ele
- HTML-elementet som hendelseslytteren skal lytte til.evt
- Den målrettede hendelsen.lytteren
- Vanligvis en JavaScript-funksjon.opsjoner
- (valgfritt) Et objekt med et sett med boolske egenskaper (oppført nedenfor).alternativer Hva skjer når det er satt til ekte
?fangst
ele.addEventListener (evt, lytter, sann)
ele.addEventListener (evt, lytter, capture: true);
en gang
passiv
Kodeeksempel
foo
, til HTML-taggen.
var btn = document.querySelector ('button'); btn.addEventListener ( 'klikk', foo); funksjon foo () alert ('hei');
Interaktiv demo
foo ()
egendefinert funksjon som en hendelseslytter til noen av de tre følgende hendelsene: inngang
, klikk
eller mus over
& utløs den valgte hendelsen i det nederste inntastingsfeltet ved å sveve, klikke eller skrive inn det.4.
removeEventListener ()
removeEventListener ()
metode løsner en hendelseslytter tidligere lagt til med addEventListener ()
metode fra arrangementet den lytter etter.syntax
ele.removeEventListener (evt, lytter, [alternativer]);
addEventListener ()
metode (bortsett fra en gang
alternativ som er utelukket). Alternativene er vant til å være veldig spesifikt om å identifisere lytteren for å være løsrevet.Kodeeksempel
addEventListener ()
, her fjerner vi klikkhendelselytteren som heter foo
fra element.
btn.removeEventListener ( 'klikk', foo);
5.
createElement ()
createElement ()
metode lager et nytt HTML-element bruker navnet på HTML-taggen å bli opprettet, for eksempel 'P'
eller 'Div'
.AppendChild ()
(se senere i dette innlegget).syntax
document.createElement (TagNavn);
TagNavn
- Navnet på HTML-koden du vil opprette. Kodeeksempel
var pEle = document.createElement ('p')
6.
appendChild ()
appendChild ()
metode legger til et element som det siste barnet til HTML-elementet som påkaller denne metoden.syntax
ele.appendChild (childEle)
ele
- HTML-elementet som childEle
er lagt til som sitt siste barn.childEle
- HTML-elementet ble lagt til som det siste barnet av ele
.Kodeeksempel
elementet er som barn av a
appendChild ()
og nevnte createElement ()
fremgangsmåter.
var div = document.querySelector ('div'); var strong = document.createElement ('strong'); strong.textContent = 'Hei'; div.appendChild (sterk);
Interaktiv demo
#en
til #R
er barnets elementer av # Foreldre-en
, # Foreldre-to
, og # Foreldre-tre
id selectors.appendChild ()
Metoden fungerer av skriver ett foreldre og ett barnsvelgernavn i inntastingsfeltene nedenfor. Du kan også velge barn som tilhører en annen forelder.7.
removeChild ()
removeChild ()
metode fjerner et spesifisert barnelement fra HTML-elementet som kaller denne metoden.syntax
ele.removeChild (childEle)
ele
- Overordnet element av childEle
.childEle
- Barnelementet i ele
.Kodeeksempel
element vi la som barn til
appendChild ()
metode. div.removeChild (sterk);
8.
replaceChild ()
replaceChild ()
metode erstatter et barnelement med en annen tilhører overordnet elementet som kaller denne metoden.syntax
ele.replaceChild (newChildEle, oldChileEle)
ele
- Foreldreelementet som barn skal byttes ut.newChildEle
- Barnelement av ele
som vil erstatte oldChildEle
.oldChildEle
- Barnelement av ele
, som vil bli erstattet av newChildEle
.Kodeeksempel
tilhører
stikkord.
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hei'; div.replaceChild (em, strong);
9.
cloneNode ()
cloneNode ()
metode.syntax
Var dupeEle = ele.cloneNode ([deep])
dupeEle
- Kopi av ele
element.ele
- HTML-elementet som skal kopieres.dyp
- (valgfritt) En boolsk verdi. Hvis den er satt til ekte
, dupeEle
vil ha alle barnets elementer ele
har, hvis det er satt til falsk
det vil bli klonet uten sine barn.Kodeeksempel
element med
cloneNode ()
, da legger vi det til appendChild ()
metode. elementer, begge med
Hallo
streng som innhold.
var strong = document.querySelector ('strong'); var kopi = strong.cloneNode (true); var div = document.querySelector ('div'); div.appendChild (kopi);
10.
insertBefore ()
insertBefore ()
metode legger til et spesifisert barnelement før et annet barnelement. Metoden kalles av overordnet element.null
På sitt sted blir barnelementet som skal settes inn lagt til som foreldrenes siste barn (lik appendChild ()
).syntax
ele.insertBefore (newEle, refEle);
ele
- Foreldreelement.newEle
- Nytt HTML-element som skal settes inn.refEle
- Et barnelement av ele
før hvilket newEle
vil bli satt inn.Kodeeksempel
element med litt tekst inni, og legg til den før de
element inne i
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hei'; div.insertBefore (em, sterk);
Interaktiv demo
appendChild ()
metode. Her trenger du bare å skrive id-valgene til to barns elementer (fra #en
til #R
) i innskuffene, og du kan se hvordan insertBefore ()
Metoden flytter det første spesifiserte barnet før den andre.11.
createDocumentFragment ()
createDocumentFragment ()
Metoden kan ikke være så godt kjent som de andre i denne listen, men er en viktig, spesielt hvis du vil sett inn flere elementer i bulk, slik som å legge til flere rader i et bord.DocumentFragment
gjenstand, som i hovedsak er en DOM-node som ikke er en del av DOM-treet. Det er som en buffer der vi kan legge til og lagre andre elementer (for eksempel flere rader) først, før du legger dem til ønsket nod i DOM-treet (for eksempel til et bord).DocumentFragment
gjenstand forårsaker ingen endringer i layoutet, slik at du kan legge så mange elementer til det som du vil før du sender dem til DOM-treet, noe som bare forårsaker en layoutendring på dette punktet.syntax
document.createDocumentFragment ()
Kodeeksempel
createElement ()
metode, legg deretter til dem i en DocumentFragment
objekt, legg til endelig dokumentfragmentet til en HTML bruker
appendChild ()
metode.
var tabell = document.querySelector ("table"); 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
eiendom å gjøre det samme, men getComputedStyle ()
Metoden har blitt gjort bare for dette formålet, det returnerer bare skriveberegnede verdier av alle CSS-egenskapene til et spesifikt HTML-element.syntax
var style = getComputedStyle (ele, [pseudoEle])
stil
- EN CSSStyleDeclaration
objekt returnert av metoden. Den inneholder alle CSS egenskaper og deres verdier av ele
element.ele
- HTML-elementet som CSS-eiendomsverdier hentes fra.pseudoEle
- (valgfritt) En streng som representerer et pseudo-element (for eksempel, ':etter'
). Hvis dette er nevnt, så CSS egenskaper av det angitte pseudo-elementet assosiert med ele
vil bli returnert.Kodeeksempel
bredde
verdien av a getComputedStyle ()
metode.
var style = getComputedStyle (document.querySelector ('div')); alert (style.width);
1. 3.
setAttribute ()
setAttribute ()
metode heller legger til et nytt attributt til et HTML-element, eller oppdaterer verdien av et attributt som allerede eksisterer.syntax
ele.setAttribute (navn, verdi);
ele
- HTML-elementet som et attributt er lagt til, eller som attributet er oppdatert.Navn
- Navnet på attributtet.verdi
- Verdien av attributtet.Kodeeksempel
contenteditable
attributt til a setAttribute ()
metode som vil gjøre innholdet redigerbart. var div = document.querySelector ('div'); div.setAttribute ( 'contenteditable', »)
14.
getAttribute ()
getAttribute ()
metode returnerer verdien av et spesifisert attributt tilhører et bestemt HTML-element.syntax
ele.getAttribute (navn);
ele
- HTML-elementet av hvilket attributt er forespurt.Navn
- Navnet på attributtet.Kodeeksempel
contenteditable
attributt som tilhører getAttribute ()
metode. var div = document.querySelector ('div'); alert (div.getAttribute ( 'contenteditable'))
15.
removeAttribute ()
removeAttribute ()
metode fjerner et gitt attributt av et bestemt HTML-element.syntax
ele.removeAttribute (navn);
ele
- HTML-elementet av hvilket attributt skal fjernes.Navn
- Navnet på attributtet.Kodeeksempel
contenteditable
attributt fra var div = document.querySelector ('div'); div.removeAttribute ( 'contenteditable');