15 JavaScript-metoder til DOM-manipulation for webudviklere
Som webudvikler skal du ofte manipulere DOM, objektmodellen, der bruges af browsere til Angiv den logiske struktur af websider, og baseret på denne struktur til lav HTML-elementer på skærmen.
HTML definerer standard DOM struktur. Men i mange tilfælde kan du manipulere dette med JavaScript, normalt for at tilføj ekstra funktionaliteter til et websted.
I dette indlæg finder du en liste over 15 grundlæggende JavaScript-metoder at hjælp DOM manipulation. Du vil sandsynligvis bruge disse metoder ofte i din kode, og du vil også støde på dem i vores JavaScript-tutorials.
1. querySelector ()
Det querySelector ()
metode returnerer det første element, der matcher en eller flere CSS-selektorer. Hvis ingen match er fundet, vender den tilbage nul
.
Før querySelector ()
blev introduceret, udviklere udbredt meget getElementById ()
metode som henter et element med en specificeret id
værdi.
Selvom getElementById ()
er stadig en nyttig metode, men med de nyere querySelector ()
og querySelectorAll ()
metoder vi er fri til målelementer baseret på en hvilken som helst CSS-vælger, således har vi større fleksibilitet.
Syntaks
var ele = document.querySelector (selector);
ele
- Første matchende element ellernul
(hvis der ikke er noget element, der passer til selektoren)vælgeren
- en eller flere CSS-selektorer, såsom"#FooId"
,".FooClassName"
," .Class1.class2"
, eller".class1, .class2"
Kodeeksempel
I dette eksempel er den første stk stk stk Test testen I modsætning til De matchende elementer returneres som en Eksemplet nedenfor bruger samme HTML som den forrige. I dette eksempel vælges alle afsnit med stk stk stk Begivenheder henviser til, hvad der sker med et HTML-element, såsom klik, fokusering eller indlæsning, som vi kan reagere med JavaScript. Vi kan tildele JS funktioner til Lyt til disse begivenheder i elementer og gøre noget, når begivenheden var opstået. Der er tre måder, du kan tildele en funktion til en bestemt begivenhed. Hvis Metoden Stopper begivenhed bobler, dvs. forhindrer indkaldelse af nogen hændelseslyttere for den samme hændelsestype i elementets forfædre. For at bruge denne funktion kan du bruge 2 syntakser: Lytteren hedder kun første gang begivenheden sker, så afmonteres den automatisk fra begivenheden og vil ikke blive udløst af den længere. Standard handling af begivenheden kan ikke stoppes med metoden preventDefault (). I dette eksempel tilføjer vi en klikhændelseslytter, der hedder Tildel Det Bruger den samme syntaks som den førnævnte Følgende Code Eksempel vi brugte på Det Du kan senere tilføje dette element til websiden ved at bruge forskellige metoder til DOM insertion, såsom Med det følgende eksempel kan du oprette et nyt afsnit element: Det Barnet, der skal indsættes, kan enten være a nyoprettede element, eller en allerede eksisterende. I sidstnævnte tilfælde vil det blive flyttet fra sin tidligere stilling til det sidste barns position. I dette eksempel indsætter vi en I følgende interaktive demo, bogstaver fra Tjek hvordan Det I dette eksempel fjerner vi Det I dette eksempel er barnelementet Når du skal oprette et nyt element, der skal være det samme som et allerede eksisterende element på websiden kan du simpelthen Opret en kopi af det allerede eksisterende element bruger I dette eksempel opretter vi en kopi til Som resultat, Det Hvis det refererede barnelement ikke findes, eller du eksplicit sender det I dette eksempel opretter vi en ny Denne interaktive demo fungerer på samme måde som vores tidligere demo, der tilhører Det Det skaber en Hvorfor tilføjer vi ikke elementer direkte til DOM-træet? Fordi DOM insertion forårsager layoutændringer, og det er en dyre browser proces da flere ensartede elementindsatser vil medføre flere layoutændringer. På den anden side tilføjer elementer til a I dette eksempel opretter vi flere tabel rækker og celler med Som følge heraf vil fem rækker - hver af dem indeholdende en celle med et tal fra 1 til 5 som indhold - blive indsat inde i bordet. Nogle gange vil du Kontroller CSS-egenværdierne af et element, inden der foretages ændringer. Du kan bruge I dette eksempel får vi og advarer den beregnede Det I dette eksempel tilføjer vi Det I dette eksempel advarsler vi værdien af Det I dette eksempel fjerner vi querySelector ()
metode og dens farve ændres til rød.
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'rød';
Interaktiv demo
querySelector ()
metode i følgende interaktive demo. Skriv blot en vælger, der matcher dem, du kan finde inden for de blå bokse (f.eks. #tre
), og klik på knappen Vælg. Bemærk, at hvis du skriver .blok
, kun sin første instans vil blive valgt.2.
querySelectorAll ()
querySelector ()
som kun returnerer første forekomst af alle matchende elementer, querySelectorAll ()
returnerer alle elementer, der matcher den angivne CSS-vælger.NodeList
objekt, der vil være en tom objekt, hvis der ikke findes matchende elementer.Syntaks
var eles = document.querySelectorAll (selector);
eles
- EN NodeList
objekt med alle matchende elementer som ejendomsværdier. Objektet er tomt, hvis der ikke findes nogen matchninger.vælgeren
- en eller flere CSS-selektorer, såsom "#FooId"
, ".FooClassName"
, " .Class1.class2"
, eller ".class1, .class2"
Kodeeksempel
querySelectorAll ()
, og er farvede blå.
var afsnit = document.querySelectorAll ('p'); for (var p af afsnit) p.style.color = 'blue';
3.
addEventListener ()
foo ()
er en brugerdefineret funktion, du kan registrere det som en klikhændelseslytter (kald det når knapelementet klikkes) på tre måder:
var btn = document.querySelector ('knap'); btn.onclick = foo;
var btn = document.querySelector ('knap'); btn.addEventListener ('klik', foo);
addEventListener ()
(den tredje løsning) har nogle fordele; det er den nyeste standard - tillader overdragelse af mere end en funktion som hændelseslyttere til en begivenhed - og leveres med et nyttigt sæt muligheder.Syntaks
ele.addEventListener (evt, lytter, [muligheder]);
ele
- HTML-elementet, som begivenhedslytteren lytter til.EVT
- Den målrettede begivenhed.lytter
- Typisk en JavaScript-funktion.muligheder
- (valgfrit) Et objekt med et sæt boolske egenskaber (angivet nedenfor).Muligheder Hvad sker der, når den er indstillet til rigtigt
?fange
ele.addEventListener (evt, lytter, sandt)
ele.addEventListener (evt, lytter, capture: true);
enkelt gang
passiv
Kodeeksempel
foo
, til HTML-tag.
var btn = document.querySelector ('knap'); btn.addEventListener ( 'klik', foo); funktion foo () alert ('hej');
Interaktiv demo
foo ()
brugerdefineret funktion som hændelseslytter til en af de tre følgende begivenheder: input
, klik
eller mus over
& Træk den valgte hændelse i det nederste indtastningsfelt ved at svinge, klikke eller indtaste det.4.
removeEventListener ()
removeEventListener ()
metode frigør en hændelseslytter tidligere tilføjet med addEventListener ()
metode fra den begivenhed den lytter til.Syntaks
ele.removeEventListener (evt, lytter, [muligheder]);
addEventListener ()
metode (undtagen for enkelt gang
mulighed der er udelukket). Indstillingerne er vant til at være meget specifikke om at identificere lytteren for at være løsrevet.Kodeeksempel
addEventListener ()
, her fjerner vi klikhændelseslytteren, der hedder foo
fra element.
btn.removeEventListener ( 'klik', foo);
5.
createElement ()
createElement ()
metode opretter et nyt HTML element bruger navnet på HTML-mærket der skal oprettes, f.eks 'P'
eller 'Div'
.AppendChild ()
(se senere i dette indlæg).Syntaks
document.createElement (tagname);
tagname
- Navnet på den HTML-tag, du vil oprette. Kodeeksempel
var pEle = document.createElement ('p')
6.
appendChild ()
appendChild ()
metode tilføjer et element som det sidste barn til HTML-elementet, der påberåber denne metode.Syntaks
ele.appendChild (childEle)
ele
- HTML-elementet til hvilket childEle
er tilføjet som sit sidste barn.childEle
- HTML-elementet blev tilføjet som det sidste barn af ele
.Kodeeksempel
element er som barn af a
appendChild ()
og den førnævnte createElement ()
metoder.
var div = document.querySelector ('div'); var strong = document.createElement ('strong'); strong.textContent = 'Hej'; div.appendChild (stærk);
Interaktiv demo
#en
til #R
er barnets elementer af # Forældre-én
, # Forældre-to
, og # Forældre-tre
id selektorer.appendChild ()
Metode fungerer af indtastning af en forælder og et barnevælgernavn i nedenstående indtastningsfelter. Du kan også vælge børn, der tilhører en anden forælder.7.
removeChild ()
removeChild ()
metode fjerner et bestemt barnelement fra HTML-elementet, der kalder denne metode.Syntaks
ele.removeChild (childEle)
ele
- Hovedelementet i childEle
.childEle
- Barnets element i ele
.Kodeeksempel
element vi tilføjede som barn til
appendChild ()
metode. div.removeChild (stærk);
8.
replaceChild ()
replaceChild ()
metode erstatter et barnelement med en anden tilhører det overordnede element, der kalder denne metode.Syntaks
ele.replaceChild (newChildEle, oldChileEle)
ele
- Forældreelement, hvoraf børn skal udskiftes.newChildEle
- Børneelement af ele
det vil erstatte oldChildEle
.oldChildEle
- Børneelement af ele
, det vil blive erstattet af newChildEle
.Kodeeksempel
tilhører
tag.
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hej'; div.replaceChild (em, strong);
9.
cloneNode ()
cloneNode ()
metode.Syntaks
var dupeEle = ele.cloneNode ([deep])
dupeEle
- Kopi af ele
element.ele
- HTML-elementet, der skal kopieres.dyb
- (valgfrit) En boolsk værdi. Hvis den er indstillet til rigtigt
, dupeEle
vil have alle barnets elementer ele
har, hvis det er sat til falsk
det vil blive klonet uden sine børn.Kodeeksempel
element med
cloneNode ()
, så tilføjer vi det til appendChild ()
metode. elementer, begge med
Hej
streng som indhold.
var strong = document.querySelector ('strong'); var kopi = strong.cloneNode (true); var div = document.querySelector ('div'); div.appendChild (kopi);
10.
insertBefore ()
insertBefore ()
metode tilføjer et specificeret barnelement før et andet barnelement. Metoden hedder moderelementet.nul
i stedet er det barnelement, der skal indsættes, tilføjet som moderens sidste barn (svarende til appendChild ()
).Syntaks
ele.insertBefore (newEle, refEle);
ele
- Moderselskab.newEle
- Nyt HTML-element, der skal indsættes.refEle
- Et barnelement af ele
før hvilken newEle
vil blive indsat.Kodeeksempel
element med lidt tekst inde, og tilføj det Før det
element inde i
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hej'; div.insertBefore (em, strong);
Interaktiv demo
appendChild ()
metode. Her skal du kun skrive id-vælgere af to barnelementer (fra #en
til #R
) i inputkasserne, og du kan se, hvordan insertBefore ()
Metode flytter det første specificerede barn Før Sekundet.11.
createDocumentFragment ()
createDocumentFragment ()
Metoden kan ikke være så kendt som de andre i denne liste, men det er alligevel en vigtig, især hvis du vil Indsæt flere elementer i bulk, såsom at tilføje flere rækker til en tabel.DocumentFragment
objekt, som i det væsentlige er en DOM-knude, der ikke er en del af DOM-træet. Det er som en buffer, hvor vi kan tilføje og gemme andre elementer (fx flere rækker) først, før de tilføjes til den ønskede node i DOM-træet (fx til en tabel).DocumentFragment
objekt forårsager ikke nogen layoutændringer, så du kan tilføje så mange elementer til det som du vil, før du sender dem til DOM-træet, hvilket kun forårsager en layoutændring på dette tidspunkt.Syntaks
document.createDocumentFragment ()
Kodeeksempel
createElement ()
metode, og tilføj dem derefter til a DocumentFragment
objekt, tilføj endelig dokumentfragmentet til en HTML bruger
appendChild ()
metode.
var tabel = 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
ejendom for at gøre det samme, dog getComputedStyle ()
metode er blevet lavet netop til dette formål, det returnerer de skrivebeskyttede værdier af alle CSS-egenskaberne for et angivet HTML-element.Syntaks
var style = getComputedStyle (ele, [pseudoEle])
stil
- EN CSSStyleDeclaration
objekt returneret af metoden. Det indeholder alle CSS egenskaber og deres værdier af ele
element.ele
- HTML-elementet, som CSS-egenværdier hentes fra.pseudoEle
- (valgfrit) En streng som repræsenterer et pseudoelement (for eksempel, ':efter'
). Hvis dette er nævnt, så er CSS-egenskaberne for det angivne pseudo-element forbundet med ele
vil blive returneret.Kodeeksempel
bredde
værdi af a getComputedStyle ()
metode.
var style = getComputedStyle (document.querySelector ('div')); alert (style.width);
13.
setAttribute ()
setAttribute ()
metode heller ikke tilføjer en ny attribut til et HTML-element eller opdaterer værdien af en attribut, der allerede eksisterer.Syntaks
ele.setAttribute (navn, værdi);
ele
- HTML-elementet, som en attribut er tilføjet til, eller hvis attribut er opdateret.navn
- Navnet på attributten.værdi
- Værdien af attributten.Kodeeksempel
contenteditable
attribut til a setAttribute ()
metode, som vil gøre indholdet redigerbart. var div = document.querySelector ('div'); div.setAttribute ( 'contenteditable', ")
14.
getAttribute ()
getAttribute ()
metode returnerer værdien af en bestemt attribut tilhører et bestemt HTML element.Syntaks
ele.getAttribute (navn);
ele
- HTML-elementet, som attributten er anmodet om.navn
- Navnet på attributten.Kodeeksempel
contenteditable
attribut tilhørende getAttribute ()
metode. var div = document.querySelector ('div'); alert (div.getAttribute ( 'contenteditable'))
15.
removeAttribute ()
removeAttribute ()
metode fjerner en given attribut af et bestemt HTML element.Syntaks
ele.removeAttribute (navn);
ele
- HTML-elementet, som attributten skal fjernes.navn
- Navnet på attributten.Kodeeksempel
contenteditable
attribut fra var div = document.querySelector ('div'); div.removeAttribute ( 'contenteditable');