HTML razredov v JS

Ko berete HTML brskalnik ustvari DOM-modela. Vendar pa je večina standardnih HTML-atributi so lastnosti posameznih predmetov.

Na primer, če je oznaka izgleda , potem predmet je nepremičnina body.id = "page".

Toda to preoblikovanje - ne ena proti ena. Obstajajo primeri, ko ima atribut eno vrednost, in premoženja - oba. Dogaja se tudi, da je atribut, in lastnosti z enakim imenom je ni ustvaril.

Na kratko - HTML-DOM-značilnosti in lastnosti so običajno, vendar ne ustrezajo vedno med seboj, je treba razumeti, da je takšno premoženje, in da je atribut pravilno delati z njimi.

Prej smo videli nekateri vgrajeno v lastnostih DOM-vozlišče. Ampak, tehnično, nihče od nas ni omejena.

DOM vozlišče - je objekt, tako, kot vsak objekt v JavaScriptu, lahko vsebujejo lastnosti po meri in metode.

Na primer, bomo ustvarili v document.bodynove nepremičnine, in pisati v njem objekta:

Lahko dodate tudi novo funkcijo:

lastnosti in metode meri so vidni le v JavaScript in ne vpliva na prikaz ustrezne oznake.

Dovolite nam, upoštevajte, meri DOM lastnosti:

  • Lahko kakšno vrednost.
  • Imena lastnosti so občutljivi v register.
  • Delo zaradi dejstva, da so DOM-vozlišča JavaScript predmeti.

V DOM elementi, na drugi strani pa ustrezajo HTML-oznake, ki imajo atribute besedila.

Seveda, tu smo skoraj vozlišča, elementi, ne glede besedila vozlišč ali komentarje.

Dostop do lastnosti se izvaja z uporabo standardnih metod:

  • elem.hasAttribute(name) - preglede za atribut
  • elem.getAttribute(name) - Get vrednost atributa
  • elem.setAttribute(name, value) - kompleti atribut
  • elem.removeAttribute(name) - odstrani atribut

Te metode dela z vrednostjo, ki je v HTML.

Prav tako lahko vse atribute je mogoče dobiti s pomočjo lastnost elem.attributes, ki vsebuje vrsto tipa pseudo-objekt Atr.

Za razliko od lastnosti, atributi:

  • So vedno strune.
  • Njihovo ime se ne med malimi in občutljivih (to je HTML)
  • Gledano v innerHTML(razen za stare IE)

Upoštevati razlike med DOM-lastnosti in atribute primer HTML-kodo:



Spodnji primer prikazuje seti atribute in njihove značilnosti.





Ko zaženete kodo zgoraj opombo

  1. getAttribute('About')- prva črka imena atributa Aboutje napisan v zgornjem primeru, tako kot v HTML - na dnu, vendar to ni pomembno, saj so imena primer neobčutljiv.
  2. Mi lahko napišete pripisati nobene vrednosti, vendar pa se pretvori v niz. Predmeti bodo samodejno pretvorjeni.
  3. Ko dodate atribut je mogoče videti v innerHTMLelementu.
  4. Zbirka attributesvsebuje vse atribute v objektih z lastnostmi namein value.

Ko brskalnik prebere HTML in ustvarja DOM-model, ustvarja lastnosti za vse standardne lastnosti.

Na primer, lastnosti oznako 'A'opisano v specifikaciji DOM: HTMLAnchorElement.

Na primer, da ima lastnost "href". Poleg tega, da ima "id"druge lastnosti, ki so skupne za vse elemente, ki so opisane v specifikaciji v html element.

Vse standardne DOM lastnosti so sinhronizirani z atributi, ampak vedno kot sinhronizacija ne poteka 1-na-1, tako da včasih moramo ceniti od HTML, ki jih imajo atribut.

Razmislite nekaj primerov.

Sinhronizacija ne zagotavlja enake vrednosti v lastnosti in lastnosti.

Preberite več:   pisava Program za MAC OS

Na primer, kaj se zgodi z atributom "href", ko spremenite lastnosti:

To je zato, ker je atribut je lahko vsak, in premoženje href, po specifikaciji W3C, bi morala biti končana s sklicevanjem.

Torej, če želimo točno to v HTML, morate iti skozi atribut.

Spremeniti nekatere lastnosti atributa posodobitve. Ampak to je prej izjema kot pravilo.

Najpogostejši sinhronizacija - enostranska: lastnost je odvisna od lastnosti, ne pa obratno.

Na primer, ko spremenite lastnosti input.valueatributa input.getAttribute('value')ne spremeni:

To pomeni, da je sprememba v DOM-nepremičnin valueatributa ne vpliva, je še vedno isto.

Toda spreminjanje atribut posodablja nepremičnine:

Ta funkcija je lahko prijetna za uporabo.

Izkazalo se je, da je atribut input.getAttribute('value')shrani izvirnik (začetna) vrednost, tudi potem, ko je uporabnik izpolnil področju in premoženja je spremenila.

Na primer, lahko prvotni pomen atributa, in primerjati z lastnostjo, da vidim, če je vrednost spremenila. In, če je potrebno, ponovno rekordno atribut nepremičnine, zavržemo spremembe.

Lastnost "class"ustreza premoženja className.

Ker beseda "class"je rezervirana beseda v Javascript je, da pri načrtovanju DOM odločil, da se bo ustrezno premoženje imenuje className.

Na primer:

Mimogrede, obstajajo tudi druge lastnosti, ki se imenujejo drugače kot lastnino. Na primer, atribut for( ) ustreza ime lastnine htmlFor.

Lastnost class- je edinstven. To ustreza kar dve lastnosti!

Delo z razredi, kot niz neprijetno. Torej, poleg tega className, v sodobnih brskalnikov imajo funkcijo classList.

Nepremičnine classList- objekt za delo z razredi.

To je podprta v IE, ker IE10, vendar se lahko posnemali v IE8 +, ki povezuje mini knjižnico classList.js.

metode classList:

  • elem.classList.contains("class")- donosi true/false, odvisno od tega, ali gre za razred element class.
  • elem.classList.add/remove("class") - dodaj / odstrani razred class
  • elem.classList.toggle("class")- če je razred classni prisoten, lahko dodate, če obstaja - odstrani.

Poleg tega, je mogoče razvrstiti po razredih forkot classList- psevdo-niz.

Na primer:

Vsak element ima nabor standardnih funkcij, kot so , da bo href, nameampak za to, da je src, altin tako naprej.

Natančen nabor funkcij, opisanih v standardu, ponavadi smo bolj ali manj prisotna, če bomo uporabili HTML, katere lastnosti je lahko, in kaj - ne.

DOM-lastnost ni ustvarjen za atribute po meri.

Na primer:

Lastnina je standard samo, če je opisano v standardu za ta element.

To je, če ste dodelili elementa atribut href, last img.hrefzdi to. Ker pa, če si določite povezavo atribut alt:

atributi po meri se včasih uporabljajo za CSS.

V naslednjem primeru pokazati, da "status naročila" se uporablja atribut order-state:

Zakaj atribut? Ne bi si naredil razrede .order-state-new, .order-state-pending, order-state-canceled?

Seveda lahko, ampak za manipulacijo atribut iz JavaScript veliko lažje.

Na primer, če želite preklicati naročilo, ne glede na kakšnem stanju je zdaj - to bo kodo:

Za razrede - treba vedeti, kaj razred je zdaj v redu. In potem bomo lahko odstranite stari razred, in dal novega:

... To pomeni, da je potrebno več začetnih informacij in da je treba napisati več črk. To je manj udoben.

Preprosto povedano, vrednost atributa - poljubna vrednost niz razred - to je "ali" ne ", zato je naravno, da so atributi" močna "in bolj priročno razredov v JS in v CSS.

Preberite več:   NOD32 Server Update 5

S pomočjo atributov meri more biti razporejena na postavko podatkov, ki bo na voljo v JavaScript.

Značilno je, da se to stori s pomočjo atributov z imeni, ki se začnejo z data-, na primer:

HTML5 standarda izrecno dovoljuje atribute data-*in jih pridržuje za uporabniške podatke.

V vseh brskalnikih razen IE10-, lahko te lastnosti mogoče dostopati ne le za atribute, ampak tudi glede na lastnosti, s posebnimi lastnostmi dataset:

Bodite pozorni - ime data-user-locationje preoblikoval dataset.userLocation. Vezaj se pretvori v veliko začetnico.

Za starejše brskalnike sodobne atributi včasih potrebujejo polifille. Kot pravilo, kot polifill vključuje ne samo JavaScript, temveč in CSS.

Ta atribut mora skriti element, ukrep je zelo preprost, da ga podpre v HTML dovolj tega CSS:

Če naletite na IE11- primer zgoraj, da