Utolsó frissítés: 1.11.2015
A JavaScript DOM-struktúrájának használatához a dokumentumobjektumot a globális ablakobjektumban kell megadni. A dokumentumobjektum számos tulajdonságot és módszert biztosít az oldalelemek kezeléséhez.
Elemek kereséseA következő módszerek használhatók az oldalon lévő elemek keresésére:
getElementById(value) : kiválasztja azt az elemet, amelynek id attribútuma egyenlő az értékkel
getElementsByTagName(value) : kiválasztja az összes olyan elemet, amelynek a címkéje egyenlő az értékkel
getElementsByClassName(value) : kijelöli az összes olyan elemet, amelynek osztályértéke van
querySelector(value) : kiválasztja az első elemet, amely megfelel a css választó értékének
querySelectorAll(érték) : kijelöli az összes olyan elemet, amely megfelel a css választó értékének
Például, elemet találni azonosító szerint:
Blokkfejléc var headerElement = document.getElementById("fejléc"); document.write("Fejléc szövege: " + headerElement.innerText);
A document.getElementById("header") meghívásával megtaláljuk az id="header" elemet. Az innerText tulajdonság segítségével pedig megkaphatja a talált elem szövegét.
Keresés adott címke alapján:
fejléc
Első bekezdés
Második bekezdés
var pElements = document.getElementsByTagName("p"); for (var i = 0; i< pElements.length; i++) { document.write("Текст параграфа: " + pElements[i].innerText + "A document.getElementsByTagName("p") meghívásával minden bekezdéselemet megtalálunk. Ez a hívás talált elemek tömbjét adja vissza. Ezért ahhoz, hogy a tömb egyes elemeit megkapjuk, ciklusban kell végigfutni rajtuk.
Ha csak az első elemet kell megszereznünk, akkor elérhetjük a talált objektumgyűjtemény első elemét:
VarpElement = document.getElementsByTagName("p"); document.write("Bekezdés szövege: " + pElement.innerText);
Elem beszerzése osztályonként:
Cikk címe
Első bekezdés
Második bekezdés
var articleDiv = document.getElementsByClassName("cikk"); console.log(articleDiv); var textElems = document.getElementsByClassName("szöveg"); for (var i = 0; i< textElems.length; i++) { console.log(textElems[i]); }Választás szerint css választó:
Cikk absztrakt
Első bekezdés
Második bekezdés
varelem = document.querySelector(".annotation p"); document.write("Szövegválasztó: " + elem.innerText);A document.querySelector(.annotation p") kifejezés talál egy elemet, amely megfelel a selector.annotation p -nek. Ha az oldalon több olyan elem is található, amely megfelel a választónak, akkor a metódus kiválasztja közülük az elsőt. Ennek eredményeként a böngésző a következőket jeleníti meg:
Cikk annotációja Első bekezdés Második bekezdés Kiválasztó szöveg: Cikk annotációja
A szelektor összes elemének megjelenítéséhez hasonlóképpen használhatja a document.querySelectorAll metódust, amely a talált elemek tömbjét adja vissza:
Cikk absztrakt
Első bekezdés
Második bekezdés
varelems = document.querySelectorAll(.text p"); for (var i = 0; i< elems.length; i++) { document.write("Текст селектора " + i + ": " + elems[i].innerText + "Böngésző kimenet:
Cikk annotációja Első bekezdés Második bekezdés Kijelölő szöveg 0: Első bekezdés Kijelölő szöveg 1: Második bekezdés
A JavaScript dokumentum .querySelector() metódusa visszaadja a dokumentum első elemét (egy elem objektumot), amely megfelel a megadott választónak vagy kijelölők csoportjának. Ha nem található egyezés, nullát ad vissza.
Felhívom a figyelmet arra, hogy CSS pszeudoelemek nem használhatók kiválasztó értékként az elemek kereséséhez, ebben az esetben a visszatérési érték mindig null lesz.
Ha szüksége van egy listára az összes olyan elemről, amely megfelel a megadott kijelölőnek vagy választóknak, használja ehhez a querySelectorAll() metódust.
A .querySelector() metódus az Element objektumon is definiálva van, ezért bármely elemen meghívható, nem csak a dokumentum objektumon. Az az elem, amelyen meg van hívva, a keresés gyökérelemeként lesz használva.
Böngésző támogatja a JavaScript szintaxist: document .querySelector( válogatók) válogatók- String Specification Selectors API 1. szintű paraméterértékekválogatók | Az argumentumnak meg kell egyeznie egy érvényes kiválasztó karakterlánccal, amely egy vagy több választót tartalmaz. Több választó megadásakor az értékeket vesszővel kell elválasztani. Ebben az esetben az adott szelektorok közül az első talált elem kerül kiválasztásra. Ha valamilyen okból olyan karaktereket használ a kiválasztók nevében, amelyek nem részei a szabványos szintaxisnak css, akkor az ilyen karaktereket fordított perjellel ( "\" ). Mivel a fordított perjel is különleges karakter (menekülni) V JavaScript, akkor a literális karakterlánc beírásakor kétszer kell kihagyni. Kötelező paraméter. |
Ebben a példában az onclick esemény attribútumot használjuk, amikor a gombra kattintunk ( HTML elem) hívjuk a myFunc() függvényt, amely segítségével JavaScript A dokumentum .querySelector() metódusa a következő elemeket választja ki:
Példánk eredménye.
Mint tudják, egy nagy JS-alkalmazás fejlesztése során, amely a legnépszerűbb jQuery könyvtárat használja, eljön az idő, amikor a teljesítményprobléma akuttá válik. Minden erő a profilozó kiskapujába rohan, minden hívást alaposan megvizsgálnak, minden funkcionálisan betöltött megvalósítási darabot minden oldalról megszagolnak és kiegyenesítenek. De a baj a rossz oldalról jön, ahol a fejlesztők 90%-a ezt várja. Választók – Hány ebben a szóban.
Nézzük meg, hogyan működik ez a varázslat, és miért okozhatják a DOM-elemek keresései az alkalmazások teljesítményének csökkenését.
BAN BEN ezt a példát ha nem lehetséges a querySelectorAll() használata, a Sizzle egyszerű iterációval szűri az elemeket.
Még egy megjegyzés a kontextussal kapcsolatban (nem a kiválasztókkal kapcsolatban) - ha a .live() függvény szelektorának második paramétere egy jQuery objektum, akkor az esemény elkapja a dokumentumot (!), Ha pedig a DOM objektum, akkor a esemény csak ehhez az elemhez fog felbukkanni. Igyekszem nem emlékezni az ilyen finomságokra, hanem a .delegate() -t használom.
Ha azonban szükség van szűrők használatára néhány attribútumnál (:visible, :eq, stb.), és a választó így néz ki:
$(.some_images:visible")
akkor a szűrő kerül utoljára - pl. ismét eltérünk a jobbról balra szabálytól.
A mesterkurzus alapján
Ahhoz, hogy a szkript működjön az oldal valamely elemével, először ezt az elemet kell megtalálni. Ezt többféleképpen is megteheti JavaScriptben. A talált elemet általában hozzárendeljük egy változóhoz, és később ezen a változón keresztül a script hozzáfér az elemhez, és végrehajt vele néhány műveletet.
Keresés azonosító alapjánHa az elemhez id attribútumot adunk az oldal kódjában, akkor az elem az id alapján található. Ez a legegyszerűbb módja. Az elem keresése a dokumentum globális objektum getElementById() metódusával történik.
document.getElementById(id)
Lehetőségek:
id - a keresendő elem azonosítója. Az id egy karakterlánc, ezért idézőjelben kell lennie.
Hozzunk létre egy oldalt, adjunk hozzá egy elemet és adjunk neki egy azonosítót , és keressük meg ezt az elemet a szkriptben:
HTML kód:
JavaScript:
var blokk = document.getElementById("blokk"); konzolnapló(blokk); |
A blokkváltozóhoz rendeltük a talált elemet, és megjelenítettük a változót a konzolban. Nyissa meg a böngésző konzolt, annak tartalmaznia kell az elemet.
Mivel az azonosító szerinti keresés a legegyszerűbb és kényelmes módja, gyakran használja. Ha valamilyen elemmel kell dolgoznia egy szkriptben, akkor az id attribútum ehhez az elemhez lesz beállítva az oldal kódjában, még akkor is, ha korábban nem volt beállítva. És keresse meg az elemet azonosítóval.
Keresés osztály szerintA getElementsByClassName() metódus lehetővé teszi egy adott osztályhoz tartozó összes elem megtalálását.
document.getElementsByClassName(osztály)
Lehetőségek:
osztály - a megtalálandó elemek osztálya
A metódus a talált elemeket tartalmazó pszeudotömböt ad vissza. Pszeudotömbnek hívják, mert sok tömbmódszer nem működik rá. De a fő tulajdonság megmarad - a tömb bármely elemére hivatkozhat. Még ha csak egy elemet találunk is, az továbbra is benne van a tömbben.
Adjunk hozzá elemeket az oldalhoz, és adjunk nekik osztályt. Egyes elemek a korábban létrehozott blokkon belül lesznek elhelyezve. A másik rész a blokkon kívül jön létre. Ennek jelentése kicsit később derül ki. Az oldal most így fog kinézni:
HTML kód:
JavaScript:
Most csak azok az elemek találhatók, amelyek a blokkban találhatók.
Keresés címke alapjánA getElementsByTagName() metódus megkeresi az összes elemet egy adott címkével. A talált elemekkel egy pszeudotömböt is ad vissza.
document.getElementsByTagName (címke)
Lehetőségek:
tag - a keresendő elemek címkéje
Keressük meg az oldalon található összes p címkét:
var p = document.getElementsByTagName("p"); konzolnapló(p); |
Ez a módszer nem a teljes dokumentumra, hanem egy adott elemre alkalmazható. Keresse meg az összes p címkét a blokkban.
Keresés választóvalLéteznek querySelector() és querySelectorAll() metódusok, amelyek megkeresik az adott szelektornak megfelelő elemeket. Ez azt jelenti, hogy a rendszer olyan elemeket fog találni, amelyekre a stílust alkalmazták volna, ha egy ilyen szelektorhoz adták volna meg. Ugyanakkor egy ilyen választó jelenléte az oldalstílusban egyáltalán nem szükséges. Ezeknek a módszereknek semmi közük a CSS-hez. A querySelectorAll() metódus megtalálja az összes olyan elemet, amely megfelel a választónak. És a querySelector() metódus talál egy elemet, amely az oldalkód első eleme. Ezek a módszerek helyettesíthetik a korábban tárgyalt elemek keresésének összes módját, mivel létezik azonosító-választó, címkeválasztó és sok más.
document.querySelector(selector)
document.querySelectorAll(választó)
A kijelölőket ugyanúgy írják, mint a CSS-ben, csak ne felejts el idézőjeleket tenni.
Adjunk hozzá egy listát az oldalhoz, és keressük meg a választó segítségével. Csak egy elemet keresünk, és biztosan tudjuk, hogy ez lesz az első, mert ez az egyetlen az oldalon. Ezért be ez az eset kényelmesebb a querySelector() metódus használata. Ennek a módszernek a használatakor azonban figyelembe kell vennie, hogy a jövőben ugyanazok az elemek hozzáadhatók az oldalhoz. Ez azonban a legtöbb módszerre vonatkozik.
HTML kód:
Ezek a módszerek nem a teljes dokumentumban, hanem egyetlen elemen belül is kereshetnek elemeket.
A példában csak címke szerinti szelektorokat használtunk. Próbáljon oldalelemeket keresni más választókkal.
Szomszédos elemekA talált elemhez szomszédokat találhat. Minden elem egy objektum, és a szomszédos elemek az objektum tulajdonságain keresztül szerezhetők be. A previousElementSibling tulajdonság tartalmazza az előző elemet, a nextElementSibling tulajdonság pedig a következő elemet.
element.previousElementSibling
elem.nextElementSibling
Keresse meg az elemet a blokk után:
Gyermek elemekA gyermekek birtokában egy sor gyermek található.
elem.gyerekek
Keresse meg a blokk gyermekelemeit.
A kezdő JavaScript-fejlesztők gyakran szembesülnek azzal a feladattal, hogy egy weboldal elemet válasszunk ki az id attribútum alapján.
Tegyük fel, hogy van kódunk egy oldalon.
Tartalom letiltása.
Hogyan jelölhetek ki egy elemet az id="elem"-vel és hajthatok végre vele néhány műveletet?
Itt több lehetőség is van a probléma megoldására. Most vessünk egy pillantást rájuk.
1. lehetőség Használat Javascript módszer getElementById.
Lehetőség van egy elemhez az azonosítójával hozzáférni "tiszta" JavaScript kóddal, harmadik féltől származó könyvtárak használata nélkül. Ez a metódus a ggetElementById("element_id") metódus használata. Így a szükséges elemre az id-vel hivatkozunk.
Nézzük meg, hogyan működik ez egy egyszerű példán.
Tartalom letiltása. alert(document.getElementById("elem").innerHTML);
Vegye figyelembe, hogy ezek a kódsorok (script) maga az elem alatt találhatók. Ez a szkript működésének előfeltétele, mert. A Javascript kód az oldal betöltésekor fut le. Ha a fenti kódot elhelyezzük, akkor az oldalon egy olyan elemre fogunk hivatkozni, amely még nem töltődött be, pl. nem lesz benne a kódban a szkript végrehajtásakor. Vannak módszerek ennek elkerülésére, de ez túlmutat e cikk keretein.
Ennek eredményeként, ha minden megfelelően működik, egy felugró ablakot kapunk. Ez az ablak megjeleníti a div blokkon belüli szöveget.
Most nézzük meg, hogyan oldhatjuk meg ezt a problémát más módon.
2. lehetőség: Használat jquery könyvtárak.
A második lehetőség egy elem azonosítója alapján történő kiválasztására a Jquery könyvtár használata. A gyakorlatban a modern szkriptekben ezt a módszert használják leggyakrabban. Sokkal kényelmesebb és könnyebben megjegyezhető.
Ahhoz, hogy egy elemre az azonosítójával hivatkozhasson, a következő konstrukciót kell használnia:
$("#elem")
Itt az elem az id attribútumban szereplő név.
Mert Mivel harmadik féltől származó Jquery nevű Javascript-könyvtárat fogunk használni, először ezt a könyvtárat kell belefoglalni.
Hozzáadjuk a szakaszhoz, ennek egyik módja a következő kódsor hozzáadása:
A könyvtár betöltéséhez internetkapcsolatnak kell lennie.
Tartalom letiltása. figyelmeztetés($("#elem").html());
Magának a szkriptnek, mint az előző példában, annak az elemnek a kódja alatt kell lennie, amellyel kapcsolatba kíván lépni.
Így két módszert elemeztünk, hogyan választhat ki egy elemet a weboldalon az id attribútum alapján, és hogyan tud vele kommunikálni. Válassza ki az Önnek megfelelő módszert, és használja a gyakorlatban.