Autor Zpráva
RPG
Profil
Ahoj,
začínám s JavaScriptem a uvítal bych pomoc... Potřebuji do proměnné načíst všechna <menu> ze stránky.
Používám tento kód:

<script>
function skryj(){
var x = document.getElementsByTagName('menu')[0];
x.style.display='none';}
</script>

Ten však vybere pouze první <menu>. Pokud odstraním "[0]", nefunguje to vůbec, taktéž pokud se pokusím o něco jako "[0,1,2,3]".

Myšlenka je taková, že pomocí JS schovám všechna <menu> na stránce. Musím použít cykly?

A otázka druhá: Lze spustit JavaScriptovou funkci jinak, než pomocí "onload" - dříve? Potřebovat bych, aby se funkce provedla již při načítání stránky.

Odpovědi na obě témata jsem již hledal, bez úspěchu.
Předem děkuji za každou užitečnou radu.
venca12
Profil
ad.1) Tuším, že by to ěelo fungovat nějak takhle:


var x = document.getElementsByTagName('menu');


for(var i=0;i<x.length;i++)
{
x[i].style.display='none';
}



ad.2) Jj, lze ji spustit například takto:

<script type="text/javascript">

mojeFunkce();
</script>


Prohlížeč provádí javascripty, uzavření v tagu script, hned jak je načte, tudíž, pokud je tento tag umístěný na začátku stránky, skript se provede, před načtením obsahu "pod ním", pokud je až na konci stránky, provede se až po načtení.

Pozor však na pokusy o skrytí neexistujících (nenačtených) elementů umístěných až pod skriptem. Pokud totiž není něco načteno, nelze to ani skrýt.
RPG
Profil
venca12
Děkuji, funguje. Já jsem tušil, že budou potřeba cykly.

Druhý způsob spuštění funkce jsem již zkoušel, nefungoval mi. Pravděpodobně proto, že jsem se vážně snažil ovlivnit neexistující prvky, přesně tak, jak jsi to psal.

Takže ještě jednou díky.
RPG
Profil
-omyl-
Chamurappi
Profil
Reaguji na RPG:
Další možné řešení skrytí všech <menu> je:
Přiřadit nadřazenému elementu třídu a ve stylopisu skrýt všechny její <menu> potomky. Výhoda je, že tuto třídu můžeš přiřadit elementu <html>, který je dostupný kdykoliv. Nemusí se čekat na načtení všech <menu>.

Tento přístup k úpravám vzhledu čehokoliv se mi líbí čím dál více, je krásně obecný, odděluje skriptování od vzhledu. K objekt.style.vlastnost přistupuji jen výjimečně (animace apod.).
RPG
Profil
Chamurappi
ve stylopisu skrýt všechny její <menu> potomky
Potřeboval jsem je skrýt pomocí JS. Ale je možné, že jsem vás jen špatně pochopil(?).
Timy
Profil
RPG
v CSS nastavíš .skryj menu {display:none}
A v DOM pak <html> přiřadíš třídu .skryj a tímpádem se aplikuje ten stylopis, co jsem psal výše. Bez JS se nic neaplikuje, protože třídu .skryj v HTML mít nebudeš.

(teď doufám já, že jsem pochopil :-))
RPG
Profil
Timy
Už chápu. Šikovné, díky za vysvětlení :o).

Chamurappi
Také děkuji za odpověď.
Toto téma je uzamčeno. Odpověď nelze zaslat.