| 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: 13 let
|
|||
0