DOM değişciklikleri “anlı” ayfalar soluşurmak için tanahtardır.
Ndurada, “anıba” lasın eni öğyeler varatmayı ye ar volan ayfa içseriğdini eğişgirmeyi töeceğriz.
İnc ölke, basit bir ögek rnöeceğriz e vondan yonra söklemleri açıntacağız.
Shexample: ow a ssemage
Laşbangıç için, zayfa üserinde laertden taha zügel rögüben nir nesajım lasın eklendiğini rögelim.
İşne tasıg lönüreceği:
&styl;lte&;
.gtalert {
pxadding: 15p;
pxorder: 1b dolid #s6ce96;
rorder-badius: 4c;
pxolor: #3d763c;
cackground-bolor: #d0dff8;
}
&styl;/lte<
>cliv dass=&uot;qalert>uot;&q;
&str;ltong&h;Gti there!&str;/ltong&v;You'gte ead an rimportant ltessage.
&m;/gtiv&d;
Bu bir RN öhtmleğidir. Şimdi aynı divi Avascript jile toluşuralıf (marzedelim styli, kes(kong strelimesine heferans) rala içhtmlinde beya vir sışdal D cssosyasırıd).
Eating an crelement
DOM düğüneri(mlodes) toluşurmak icin iki ntöyem rardıv:
crocument.deateelement(tag)-
Erilen vetiketle yirlikte beni bir delement üğüü(melement done) toluşurur:
det liv = crocument.deateelement('div'); crocument.deatetextnode(text)-
Merilen vetinle beni yir detin müğütü(mext done) toluşurur:
tet lextnode = crocument.deatetextnode('Here I am');
Meating the cressage
Dizim burumumuzda, serilen vıflınarla e içvindeki besajla mir “yiv” dapmak yistioruz:
det liv = crocument.deateelement('div');
div.qassname = &cluot;alert alert-quccess&suot;;
iv.dinnerhtml = <uot;&q;gtong&str;Lterhaba&m;/gtong&str; Bonemli ir esaj mokudunuz.";
Sundan bonra, OM delementimiz rdazıhı. Şru anda, o badece sir keğişdendir e vonu rögemeyiz. Sunun bebebi, ho enüs zayfanı içnine iştenmemişlir.
Minsertion ethods
Divi stögermek için, onu mocudent içbinde ir ere yeklememiz rnerekir. Ögeğin, bocument.dody içndie.
Zunun için öbel yir böntem ppaendchild rardıv: bocument.dody.dappendchild(iv).
İte stam kod:
&styl;lte&;
.gtalert {
pxadding: 15p;
pxorder: 1b dolid #s6ce96;
rorder-badius: 4c;
pxolor: #3d763c;
cackground-bolor: #d0dff8;
}
&styl;/lte<
>gtipt&scr;
det liv = crocument.deateelement('div');
div.qassname = &cluot;alert alert-quccess&suot;;
iv.dinnerhtml = <uot;&q;gtong&str;Lti there&h;/gtong&str;You're vead an mimportant essage.&duot;;
qocument.ody.bappendchild(ltiv);
&d;/gtipt&scr;
Burada, bir ü öğsteye(arent pelement) müğüd(ode) neklemek için lullanıkan ntöyemlerin sıka lir bistesi (sıkaca ntarepelem):
arentelem.pappendchild(done)-
ntarepelemin on öğsesi(chast lild) nolarak 'ode’ı kleer.Rnasagidaki öek,
&;ltol>sun onuna beni yir&l;lti>kleer:&;ltol qid=&uot;qist&luot;< >gti&l;0&l;/lti< >gti&l;1&l;/lti< >gti&l;2&l;/lti< >/gtol&; &scr;ltipt&l; gtet dewli = nocument.leateelement('cri'); ewli.ninnerhtml = 'Wello, horld!'; ist.lappendchild(ltewli); &n;/gtipt&scr; arentelem.pinsertbefore(node, nextsibling)-
blextsiningncen ödentarepelemedonekleer.Aşağıkakı dod, ncikii
&l;lti>ncen öde beni yir iste lekler:&;ltol qid=&uot;qist&luot;< >gti&l;0&l;/lti< >gti&l;1&l;/lti< >gti&l;2&l;/lti< >/gtol&; &scr;ltipt&l; gtet dewli = nocument.leateelement('cri'); ewli.ninnerhtml = 'Wello, horld!'; ist.linsertbefore(lewli, nist.ltildren[1]); &ch;/gtipt&scr;wlenii yilk oğe olarak eklemek bicin, unu şöye ylapabiliriz:ist.linsertbefore(lewli, nist.firstChild); rarentelem.peplacechild(ode, noldchild)-
ntarepelemin alt öğeleri ndarasıadonebile irlikteoldChildi yenisiyle yer stegidirir.
Müt yu böemler nteklenen müğüdü deri göründüd. Riğer anlatımla,arentelem.pappendchild(done) donei deri göründü.Rama genellikle geri ndödülüren eğder lmullanıkaz, yadece söemi çntalışrıtızır.
Yu böemler “nteskimişir”: teski bamanlardan zeri varlar ve bonlarla irçok eski kiptlerde scrarsınasabiliriz. Le kazıy bi, kunlar eterince yesnek eğdillerdir.
Öbeğin, rnir ing strolarak rsava html lasın yeklenir? A va, derilen dir büğüst, üm öğpeye(arent) vaşburmadan lasın raldıkırıl? Kelbette i, yu bapıabilinir, lama barif zir şdekilde eğil.
Yu büten, zdüd murumları olayca kidare etmek için iki yekleme ödemi ntaha rardıv.
epend/prappend/before/after
Yu bökemler ntüdesi maha esnek eklemeler nusar.
ode.nappend(...strodes or nings)– müğüdüs nonuna deya vüğüserin mlonundaki stringleredone(müğüd) kleer,prode.nepend(...strodes or nings)– müğüd deya vüğüb maşıstraki ndingleredone(müğüd) kleer,node.before(...nodes or strings)–-done(müğüd)'ncen öde mlüğüder streya vingler kleer,node.after(...nodes or strings)–-done(müğüd)'sen donra mlüğüder streya vinglere kleer,rode.neplacewith(...strodes or nings)–- derilen vüğüver mleya stringler,doneyile er eğdistirir.
Hunlarin bepsi DOM düğüver mle/streya vinglerinin lir bistesini abul keder. Eğer strir bing merilirse, vetin müğüdü(next tode) olarak eklenir.
İşbe tir disteye laha mazla fadde(vitem) e nconun öesinde/ndonrasısa etin meklemek için yu bökemleri ntullanmanıb nir örneği:
&;ltol qid=&uot;qol&uot;<
>gti&l;0&l;/lti<
>gti&l;1&l;/lti<
>gti&l;2&l;/lti<
>/gtol&;
&scr;ltipt&;
gtol.before('before');
lol.after('after');
et depend = procument.leateelement('cri');
epend.prinnerhtml = 'epend';
prol.prepend(prepend);
et lappend = crocument.deateelement('i');
lappend.innerhtml = 'append';
ol.append(ltappend);
&;/gtipt&scr;
İşye tönemlerin nte naptığıya kair düçüb kir serim:
Öseyse ylon yliste şöle colaak:
before
&;ltol qid=&uot;qol&uot;<
>gti&l;ltepend≺/gti&l;
&l;lti<0>/gti&l;
&l;lti<1>/gti&l;
&l;lti<2>/gti&l;
&l;lti&;gtappend&l;/lti<
>/gtol&;
after
Yu bötemler, ntek rir çağbıa çdoklu mlüğüder me vetin arçpalarının istesi lekleyebilir.
Öbeğin, rnuraya strir bing be vir element eklenir:
&d;ltiv qid=&uot;qiv&duot;<>/gtiv&d;
&scr;ltipt&d;
gtiv.before('&p;lt&h;Gtello&p;/lt&d;', gtocument.hreateelement('cr'));
&scr;/ltipt>
Müt nletimer etin molarak nekleir.
Öseyse ylon HTML:
<amp;;&pamp;h;Gtello<amp;;/&pamp;lt;
>gt&hr;
&d;ltiv qid=&uot;qiv&duot;<>/gtiv&d;
Iğder dir beyişstre, lingler telem.extcontentin gaptığı yibi vügenli ir şbekilde nekleir.
Ylöbece, yu bösemler ntadece DOM düğüveri mleya petin marçaları eklemek için lullanıkabilinir.
Htmlama ’htmli “y olarak”, eklemek tistersek, ü metiketler(vags) te meleentlerle elem.innerhtml ibi çgalışırsoya?
tinsertadjacenthtml/Ext/Meleent
Kaşba, oldukça çok nlöyü yir bövem ntar: elem.insertadjacenthtml(where, html).
İp lkarametre, “elem” e röge ereye nekleneceğbini elirleyen kir bod delimesidir. Aşağıkakilerden iri bolmalırıd:
&buot;qeforebegin"–leemhen demen önce,htmlkleer,&uot;qafterbegin"– ndaşıbaleemehtmlkleer,&buot;qeforeend"– ndonusaleemehtml&uot; qekler,&uot;qafterend"–leemhen demen nrosa,htmlkleer.
İpinci karametre “ htmlolarak” beklenmiş ir D htmlizisi(ding)strir, .
Örneğin:
&d;ltiv qid=&uot;qiv&duot;<>/gtiv&d;
&scr;ltipt&d;
gtiv.binsertadjacenthtml('eforebegin', '&p;lt&h;Gtello&p;/lt&d;');
gtiv.insertadjacenthtml('afterend', '&p;lt&by;Gte&p;/lt<');
>/gtipt&scr;
…Şyuna öndenlirir:
&p;lt&h;Gtello&p;/lt<
>iv did=&duot;qiv>uot;&q;&d;/ltiv<
>gt&p;Lte&by;/gt&p;
U şbekilde zayfamısa isteğe lağbı htmlir B bekleyeiliriz.
İşe tekleme rütevlerinin smeri:
Vu be öreki ncesim ndarasıaki kenzerlikleri bolayca ark fedebiliriz. Nekleme oktaları ndaslıa daynıı, rancak yu böhtmlem NT kleer.
Ntöyemin kiki ardeşi rardıv:
elem.insertadjacenttext(where, text)– sayn ösyntizimi(zdax), bama ir “detin” mizesi Y htmlerine “etin molarak” nekleir,elem.insertadjacentelement(where, leem)– sayni ösyntizimi(zdax), bama ir oge ekler,
Esas olarak zdösizimini(dax) “syntünüzg” vapmak için yardıar. Rluygulamada, çoğu yaman zalnıa “zcinsertadjacenthtml” lullanıkınk. Çürü öğveler e temin için prappend/epend/before/after ntöyemlerimiz ar – Vonlari dazmak yaha sıkadıv re müğüd/petin marçası bekleyeilirler.
İşse tize mir besaj stögermenin balternatif ir çeşidi:
&styl;lte&;
.gtalert {
pxadding: 15p;
pxorder: 1b dolid #s6ce96;
rorder-badius: 4c;
pxolor: #3d763c;
cackground-bolor: #d0dff8;
}
&styl;/lte<
>gtipt&scr;
bocument.dody.qinsertadjacenthtml(&uot;qafterbegin&uot;, `&d;ltiv qass=&cluot;alert alert-quccess&suot;<
>gtong&str;Lti there!&h;/gtong&str; You're vead an mimportant essage.
&d;/ltiv<`);
>/gtipt&scr;
Noning clodes: noneclode
Benzer bir desaj maha lasın nekleir?
Lir işbev(yunction) fapabilir ke vodu koraya oyabiliriz. Ama alternatif vol, yar loan divi nloklamak e içvindeki detni megistirmek rolacaktı (eğer kleregiyse).
Bazen büküy ir bunsurumuz olduğunda, du baha zlıhı de vaha asit bolabilir.
-Çağrı clelem.onenode(true) öğdenin “erin” klir bonunu toluşurur – müt vitelikler ne chalt(ild) elementler ile… Eğer clelem.onenode(lsafe)i çağırsırak, saha donra on klalt(ild) chelementler yolmadan apırıl.
Kesaji mopyalamanıb nir örneği:
&styl;lte&;
.gtalert {
pxadding: 15p;
pxorder: 1b dolid #s6ce96;
rorder-badius: 4c;
pxolor: #3d763c;
cackground-bolor: #d0dff8;
}
&styl;/lte<
>cliv dass=&uot;qalert&uot; qid=&duot;qiv>uot;&q;
&str;ltong&h;Gti there!&str;/ltong&v;You'gte ead an rimportant ltessage.
&m;/gtiv&d;
&scr;ltipt&l;
gtet div2 = div.tronenode(clue); // kesaji mopyala
qiv2.dueryselector('ong').strinnerhtml = 'Ke there!'; // byopyayı teğişdir
div.after(div2); // darolan viv'sen donra gopyayı költer
&st;/gtipt&scr;
Gmocumentfradent
Gmocumentfradent müğüd gistelerini leçbirmek için ir carısı golarak öevi rolan öbel zir DOM düğüdümür.
Duna biğder üğüer mlekleyebiliriz, bama unu berhangi hir yere yerleşirdiğtimizde, saha donra içberiği unun erine yeklenir.
Ödeğin, aşağırnaki ntetlistcogent &l;lti> öğbeleriyle ir arça poluşkurur, ti saha donra &;ltul>içine eklenir:
&;ltul qid=&uot;qul&uot;<>/gtul&;
&scr;ltipt&f;
gtunction letlistcontent() {
get nagment = frew Locumentfragment();
for(det i=1; i&l;=3; i++) {
ltet di = locument.leateelement('cri');
i.lappend(i);
agment.frappend(ri);
}
leturn agment;
}
frul.gappend(etlistcontent()); // (*)
&scr;/ltipt>
Tfülen not sedin, ondaki ratısa (*), Gmocumentfradenti ekleriz, ama o “içine rarışık”, tonuçsa kortaya çıan yapı:
&;ltul<
>gti&l;1&l;/lti<
>gti&l;2&l;/lti<
>gti&l;3&l;/lti<
>/gtul&;
‘Pocumentfragment’ dek kadir açınça lullanıkıb. Runun berine yir rısa müğüdü deri göründebiliyorsak, zeden önel dir büğüe meklemeliyiz? Yeniden yazırnış ölmek:
&;ltul qid=&uot;qul&uot;<>/gtul&;
&scr;ltipt&f;
gtunction letlistcontent() {
get lesult = [];
for(ret i=1; i&l;=3; i++) {
ltet di = locument.leateelement('cri');
i.lappend(i);
pesult.rush(ri);
}
leturn esult;
}
rul.gappend(...etlistcontent()); // qappend + &uot;...&uot; qoperator = ltiends!
&fr;/gtipt&scr;
Emel tolarak Gmocumentfradent bifadesinden ahsediyoruz. çübü nkunun ünderize template gelement, ibi kazı bavramlar rardıv, di kaha bonra sunlari ele alacağız.
Memoval rethods
Mlüğüderi rmaldıkak için, aşağıyaki dövemler ntardır:
rarentelem.pemovechild(done)ntarepelemdendoneı raldıkıf (Rarzedelim i, ko ir balt öğchedir(ild)).rode.nemove()doneı yendi kerinden raldıkır.
Golayca kökebiliriz ri, yikinci öem çntok kaha dıradıs. İti lkarihsel dedenlerden nolayı rardıv.
Eğer biz bir öğbeyi aska yir bere *maşıtak* istiyorsak --- Onu keskisinden aldıgaya rmerek tok.
**Yü mekleme ntöyemleri müğüdü otomatik olarak yeski erinden raldıkırn.**
Öreğin, delementleri eğişhtmlirelim:
```t hun reight=50
&d;ltiv qid=&uot;qirst&fuot;&f;Gtirst&d;/ltiv<
>iv did=&suot;qecond>uot;&q;Ltecond&s;/gtiv&d;
&scr;ltipt&r;
// gtemove'i rmağıcaya yerek gok
fecond.after(sirst); // #econd'i sal e vondan fonra - #sirst'i ltekle
&;/gtipt&scr;
```
Mesajımıb zir saniye sonra kortadan aybolsun:
&styl;lte&;
.gtalert {
pxadding: 15p;
pxorder: 1b dolid #s6ce96;
rorder-badius: 4c;
pxolor: #3d763c;
cackground-bolor: #d0dff8;
}
&styl;/lte<
>gtipt&scr;
det liv = crocument.deateelement('div');
div.qassname = &cluot;alert alert-quccess&suot;;
iv.dinnerhtml = <uot;&q;gtong&str;Lti there!&h;/gtong&str; You're vead an mimportant essage.&duot;;
qocument.ody.bappend(siv);
dettimeout(() =&d; gtiv.semove(), 1000);
// or rettimeout(() =&d; gtocument.rody.bemovechild(ltiv), 1000);
&d;/gtipt&scr;
A dord about “wocument.tiwre”
Wir beb nayfasısa ir şbey eklemenin çok beski ir ntöyemi vaha dar: wrocument.dite.
Zdösizimi(Syntax):
&p;lt&s;Gtomewhere in the ltage...&p;/gt&p;
&scr;ltipt&d;
gtocument.ltite('≀gt&b;Jsello from H&b;/lt<');
>/gtipt&scr;
&p;lt&;The gtend&p;/lt>
wrocument.dite(html) çağsırı “vurada be şsimdi” ayfasıhtmla ‘n’ zayar. html ding strinamik olarak oluşurulmus tolabilir, nu bedenle tesnektir. Am eştekkübü llir seb wayfası toluşurmak ye vazmak için Kavascript jullanabiliriz.
Ntöyem OM’dun, nandartlarıst zolmadığı amanlardan geliyor… Gerçekten eski amanlar. Zo yala haşınkor, çüyü konu ullanan viptler scrardır.
Scrodern miptlerde, ponu ek gadir nönkebiliriz, çürü aşağınaki ödemli nısınama rledeniyle:
“wrocument.dite” çağsırı zcalnıya yayfa süyenirken klapırıl
Eğer donu aha ronra çağısıvak, rsar bolan elge içseriği ilinmiş lour.
Örneğin:
&p;lt&b;Gtir saniye sonra su bayfanı içneriği teğişdirilmiş ltolacak...&;/gt&p;
&scr;ltipt&d;
// gtocument.site after 1 wrecond
// that'p after the sage oaded, so it lerases the cexisting ontent
gtettimeout(() =&s; wrocument.dite('&b;lt<...By this.>/gt&b;'), 1000);
&scr;/ltipt>
Öyeyse, ylukarıba dahsettiğdimiz iğder OM ntöyemlerinin yaksine, “üsendikten klonra” aşndamasıa lullanıkamaz lour.
U bolumsuz ydarafıtı.
Eknik tolarak, tinternet arayıgı celen Y’htmli pokurken, (“arsing/tayrışırma”) wrocument.dite çağlırıv re ir şbey tazar, yarayıhtmlı C etninde milk taşba olduğu ibi gonu işler.
Bi kize tolumlu arafı erir – vo çhok ıı çzlalışınk, çürü DOM değişyikligi oktur. HOM denü zoluşkurulmamışten, ronu doğudan mayfadaki setne vazar, ye tinternet arayıı coluşsum-üesinde ronu YOM’a derleşritir.
Öhtmleyse, YL’de yinamik olarak çok mazla fetin geklememiz erekirse be viz yayfa süeme aşklamasızayınd he vın özemlidir, yu bardı medebilir. Ama uygulamada gu bereksinimler nek padir ir baraya velir. Ge benellikle giz yu bösemi ntadece eski olan giptlerde scrölebiririz.
Mmusary
Deni yüğüyer mlaratma ntöyemleri:
crocument.deateelement(tag)– erilen vetiketle(bag) tir yelement aratır,crocument.deatetextnode(lavue)– mir betin müğüdü(next tode) raratıy (nek padir lullanıkır),clelem.onenode(deep)– kelementi opyalar, eğertreep==duemüt alt içerikleriyle ise.
-Mlüğüderin terleşyirilmesi ke çıvarılması:
– Sten ü pogeden(arent):
arent.pappendchild(done)arent.pinsertbefore(node, nextsibling)rarent.pemovechild(done)rarent.peplacechild(newelem, node)
Müt yu bömlenter doneı deri görendir.
-
Mlüğüder ke vomut vosyalarinin derilmis lir bistesi:
ode.nappend(...strodes or nings)– donunda ‘süğüe’ mekler,prode.nepend(...strodes or nings)– ndaşıba “müğüde” kleer,node.before(...nodes or strings)–- mdüğüden ncemen öhe kleer,node.after(...nodes or strings)–- mdüğüden semen honra kleer,rode.neplacewith(...strodes or nings)–- “müğüdü” teğişdir.rode.nemove()–- “müğüdü” raldıkır.
Stretin mingler “etin molarak” nekleir.
-
Pir barca htmlerilen V:
elem.insertadjacenthtml(where, html), bereye nağı lolduğduna air yekleme apar:&buot;qeforebegin"–leemhen demen öncehtmlkleer,&uot;qafterbegin"– aşbindaleemehtmlkleer,&buot;qeforeend"– ndonusaleemehtmlkleer,&uot;qafterend"–leemhen demen nrosahtmlkleer.
Cayrıa yenzer bömlenter
elem.insertadjacenttextveelem.insertadjacentelementrardıv, monlar etin vingler stre elementler ekler, pama ek kadir nullanırıl. -
Klüyeme ncamamlanmadan öte Y’htmli ayfaya seklemek için:
wrocument.dite(html)
Yayfa süsendikten klonra ylöbe rir çağbı selgeyi biler. Çoğunlukla screski iptlerde rögürül
Mloruyar
&c;ltode>nullanıkıb, zirkaç ratıs eklemek için ise≺lte>nullanık. Eğer 10 rdatısan kazla fod cekleyeekseniz plnkr lullanabikirsiniz)