Autor Zpráva
Lukáš Chmela
Profil *
Přeji hezký den, nebo zpíše večer?
Zase jsem se po dlouhé době vrátil k JS a musím přiznat, že mne včera nadchla jeho podobnost s PHP, čiliže pro mne nebyl až tak složitý. Nicméně složitých scriptů přibývalo no a s tím i zádrhelů.
Jak jsem již řekl, scripty mám opravdu dlouhé, jelikož se snažím o webovou aplikaci, která bude instalovat různé programy za pomoci PHP ( hlavní struktura ) a JS ( interaktivita instalačky ).
Jenže mám problémy i ve scriptech, které by logicky měly jít, jenže v mém případě jaxi nejdou a to mne opravdu dopálilo. Tak vás prosím o radu, jestli nevíte, čím by tyto chyby mohly být způsobeny, popř. jak jim předejít... script proběhne funkci startup až po první document.getElementById.... a pak se zastaví.

startup();
function startup() {
main = new Image();
main.src = 'Grafika/Loading/main.png';
lineone = new Image();
lineone.src = 'Grafika/Loading/line1.png';
linetwo = new Image();
linetwo.src = 'Grafika/Loading/line2.png';
pointone = new Image();
pointone.src = 'Grafika/Loading/point1.gif';
pointtwo = new Image();
pointtwo.src = 'Grafika/Loading/point2.gif';
document.getElementById('point1').style.color='#ececec';
document.getElementById('point1img').src='Grafika/Loading/point2.gif';
document.getElementById('point2').style.color='#ff9600';
document.getElementById('point2img').src='Grafika/Loading/point1.gif';
document.getElementById('line2').style.display='block';
variables();
}
zivan
Profil
Co vrati fce document.getElmentById('point1') ?

Chtelo by to i tu cast HTML, kde jsou prvky s id "point1", "point1img" ...
Lukáš Chmela
Profil *
aha, nj.. to mne nenapadlo... mmnt
tady:
<img src="Grafika/Loading/line2.png" id="line2" />
<p id="point1"><img src="Grafika/Loading/point1.gif" id="point1img" /> Rozpoznávání systému</p>
<p id="point2"><img src="Grafika/Loading/point2.gif" id="point2img" /> Načítání grafiky</p>
<p id="point3"><img src="Grafika/Loading/point2.gif" id="point3img" /> Načítání ikon</p>

co to vrací, nevim... v ifu to totiž neodpoví na if (doc....) ani na if (!doc....)
Lukáš Chmela
Profil *
mám takové tušení že by to mohl způsobovat zbytek js scriptů, ale jak říkám, je to jen doměnka...
připomíná mi to trable z php, kvůli kterým jsem musel přepsat celý script, i když byl naprosto v pořádku...
zivan
Profil
A co Konzole javascriptu? Nehlasi nejaky error?
Lukáš Chmela
Profil *
... IE nevznáší námitky, ale vidím že Opeře se to moc nelíbí...
message: Statement on line 14: Could not convert undefined or null to object
jenže objekt point1 tam je
Lukáš Chmela
Profil *
nj, o nic lépe na tom není ani Mozilla a Netscape. point1 prý neexistuje nebo nelze změnit parametry
zivan
Profil
Neco mas blbe, tohle normalne funguje.

<body>
<img src="Grafika/Loading/line2.png" id="line2" />
<p id="point1"><img src="Grafika/Loading/point1.gif" id="point1img" /> Rozpoznávání systému</p>
<p id="point2"><img src="Grafika/Loading/point2.gif" id="point2img" /> Načítání grafiky</p>
<p id="point3"><img src="Grafika/Loading/point2.gif" id="point3img" /> Načítání ikon</p>
<script>
document.getElementById('point1').style.color='#ececec';
document.getElementById('point1img').src='Grafika/Loading/point2.gif';
document.getElementById('point2').style.color='#ff9600';
document.getElementById('point2img').src='Grafika/Loading/point1.gif';
document.getElementById('line2').style.display='block';
</script>
</body>
tiso
Profil
Lukáš Chmela
Problém bude asi v tom že v dobe vykonávania toho JS ten element ešte neexistuje, naviaž to na <body onload="statup();">
Lukáš Chmela
Profil *
zivan: nj, v mém případě by ale bylo psaní rovnou do html nesmyslné.
tiso: aha, opravdu. Dráve jsem pomocí funkce onload načítal scripty normálně, ale pak jsem je nechal načítat samy od sebe a ukázalo se, že zpomoci funkce onload to opravdu funguje =). Už jsem zkoušel přámý zápis do html, ale nešlo mi to... asi jsem někde udělal chybu. Největší problémy jsou vždy blbosti :D Opravdu moc děkuji za pocom ;)
peta
Profil *
"IE nevznáší námitky" - a mas zaple i podrobnosti v JS konzole v IE? :)
zivan
Profil
Lukáš Chmela: Slo mi o to, ze problem neni v tomhle kodu. Ze to funguje a musis hledat neco jineho.
Joker
Profil
Lukáš Chmela
Ono zápis
document.getElementById('point1').style.color='#ececec';
není moc odolný proti chybám...
Pokud se něco zvrtne, tak:
document.getElementById('point1') - undefined
document.getElementById('point1').style - chyba

Robustnější řešení by bylo:
if(document.getElementById && (el=document.getElementById('point1')) && el.style) el.style.color='#ececec';

Vůbec nejlepší by bylo si udělat vlastní načítací funkci, která by zvládala načítat přes document.getElementById() i přes document.all a případně document.layers a potom by to vypadalo například takto:
if((el=nacti('point1')) && el.style) el.style.color='#ececec';

a nevyhazovalo by to chyby.
Jinak ale samozřejmě základní poučka je, že funkci pracující s nějakými HTML prvky musím volat až po načtení těch prvků
Toto téma je uzamčeno. Odpověď nelze zaslat.

0