Autor | Zpráva | ||
---|---|---|---|
emissary Profil |
var body = document.getElementsByTagName("body") [0]; Čo znamená tá nula na konci [0] ?
ďakujem Moderátor Joker: Titulek „Začiatočnícka otázka“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
Radek9 Profil |
emissary:
Metoda getElementsByTagName vrací kolekci objektů. Body bývá na stránce většinou jednou, takže ti stačí vzít si jen nultý prvek. Osobně bych ale radši použil document.body .
|
||
Joker Profil |
#3 · Zasláno: 2. 12. 2012, 10:13:40
emissary:
Případně další informace o práci s poli zde. |
||
emissary Profil |
#4 · Zasláno: 2. 12. 2012, 10:54:33
Hmm... ak som to teda správne pochopil, tak
document.getElementsByTagName("body") [0]; je ako keby:
var pole = []; pole[0] = 'zelena'; var xxx = pole[0]; == var body = document.getElementsByTagName("body") [0]; Len nechápem celkom tomu, že ak je body na stránke len jedno, tak prečo za zaťažovať tou [0] .
Bude to tým, že aj keď bude obsahovať document.getElementsByTagName() len jedno pole. Teda document.getElementsByTagName[0] a ak ho priradím do premennej var body tak mi z var body vznikne tiež pole, ktoré bude síce obsahovať len jeden prvok? A ak to spravím tak, že do var body priradím document.getElementsByTagName[0] , tak vtedy mi vznikne z var body len premenná typu "string"?
|
||
Joker Profil |
#5 · Zasláno: 2. 12. 2012, 11:11:04
emissary:
„Len nechápem celkom tomu, že ak je body na stránke len jedno, tak prečo za zaťažovať tou [0].“ Už to vysvětloval Radek9. Zatímco třeba document.getElementById vrací jeden prvek, metoda document.getElementsByTagName vrací kolekci (~ pole). Proto je i v jejím názvu množné číslo (elements). S tím body je to trochu matoucí, ale vezměme document.getElementsByTagName("div") . To vrátí všechny prvky <div> na stránce.
document.getElementsByTagName("div")[0]; //první <div> na stránce document.getElementsByTagName("div")[1]; //druhý <div> na stránce document.getElementsByTagName("div")[2]; //třetí <div> na stránce … S prvkem <body> je to to samé, ta metoda bude fungovat i kdyby na stránce bylo víc prvků <body>, ale obvykle máme jen jeden, takže můžeme rovnou vzít první (a obvykle i poslední) <body> na stránce document.getElementsByTagName("body")[0] .
|
||
Str4wberry Profil |
#6 · Zasláno: 2. 12. 2012, 11:14:10
(Ehm, ono může být na HTML stránce jiný počet než právě jeden element
<body> ?)
|
||
Joker Profil |
#7 · Zasláno: 2. 12. 2012, 11:46:53
Str4wberry:
Já píšu jen „na stránce“, možná lepší termín by byl „v dokumentu“. Nicméně i stránka může být v XHTML a může tam být prvků <body> kolik si usmyslím. Každopádně co jsem chtěl říct je, že metoda document.getElementsByTagName neřeší, kolik těch prvků na stránce dovoluje nějaká specifikace, prostě vždycky vrátí kolekci. |
||
emissary Profil |
#8 · Zasláno: 2. 12. 2012, 11:51:09
Joker
Ale ja chápem tomu tvojmu vysvetleniu. Len nechápem tomu, že ak mám jeden prvok body , prečo sa budem zaťažovať tou nulou. Chápem tomu, že pri prvkoch ako je div je to úplne normálne.
Ja som sa pýtal, že ak: 1. var div = document.getElementsByTagName("div") [0];
tak z premennej div vynikne iba obyčajná premenná. Teda premenná dátoveho typu string . Áno - Nie?
2.1 Ak do premennej chcem zapísať pole, ktoré bude obsahovať LEN jeden prvok a ja ho nešpecifikujem tou [0] , takto:
var body = document.getElementsByTagName("body"); tak z premennej body mi vznikne pole? Toto pole bude obsahovať jeden prvok. Teda odkazovať naň sa budem body[0] ? Áno - Nie?
2.2 Ak do premennej budem chcieť zapísať PRVOK pola, takto: var body = document.getElementsByTagName("body") [0]; tak z premennej body vznikne iba obyčajná premenná dátového typu string ? Áno - Nie?
Moje odpovede: 1. - Áno; 2.1 - Áno; 2.2 - Áno; 3. Teda jediný osoh z kódu (V PRÍPADE, ŽE STRÁNKA OBSAHUJE LEN JEDEN PRVOK BODY): var body = document.getElementsByTagName("body") [0]; oproti var body = document.getElementsByTagName("body"); je ten, že z premennej body mi nevznikne POLE! Áno - Nie?
Moja odpoveď: 3. - Áno; |
||
Joker Profil |
#9 · Zasláno: 2. 12. 2012, 11:57:54
emissary:
1. „tak z premennej div vynikne iba obyčajná premenná. Teda premenná dátoveho typu string. Áno - Nie?“ Ne. Ne string ale objekt příslušného HTML prvku (v případě prvku <div> to bude „object HTMLDivElement“) 2.1: Ano 2.2: To samé jako 1, nebude to string, ale objekt. 3. Ano Kdybyste napsal: var body = document.getElementsByTagName("body"); Když máte var body = document.getElementsByTagName("body")[0]; |
||
Str4wberry Profil |
#10 · Zasláno: 2. 12. 2012, 12:25:06
Ano, jen mi přišlo vhodné doplnit, že kód:
<body>1</body> <body>2</body> <script>alert(document.getElementsByTagName("body")[0].innerHTML);</script> |
||
emissary Profil |
#11 · Zasláno: 2. 12. 2012, 13:11:34 · Upravil/a: emissary
Joker:
V podstate som to pochopil správne. Ďakujem za príspevky. Ďakujem všetkým za príspevky, túto tému môžme uzavrieť. |
||
peta Profil |
#12 · Zasláno: 3. 12. 2012, 09:04:59
"prečo sa budem zaťažovať tou nulou."
Protoze tak je udelana ta funkce, ze vraci pole. Muzes si udelat funkcni findFirstTag, ktera ti najde prvni tag nebo null. |
||
Časová prodleva: 12 let
|
0