Autor Zpráva
skor
Profil
Mám logo stránky a chci aby se mi náhodně pohybovalo, ale z nějakého důvodu se mi nechce rozhýbat.
Přikládám kód:

<html>
<head>
<title>horní lišta</title>
<style>
#logo {border-width:2px;
border-style:double;
border-color:red;  
width:150px;
height:150px;}
#logo-kruh {position:absolute;
left:0px;
top:0px;}
</style>   
<script>
var zleva=0;
var zhora=0;
function nahodnypohyb(co)
{
doleva=Math.ceil(Math.random()*3)-2+zleva;
dolu=Math.ceil(Math.random()*3)-2+zhora;
document.getElementById(co).style.top=dolu+"px";
document.images[co].style.left=doleva."px";
zleva=doleva;
zhora=dolu;
};
function zacni(casto,co){interval=setInterval(nahodnypohyb(co),casto)} 
</script>
</head>
<body>
<script>zacni(1000,"logo-kruh")</script>
<table align="left" id="logo"><tr><td>&nbsp<img src=logo-kruh.gif id=logo-kruh></td></tr></table>
</body>
</html>
_es
Profil
skor:
Prvý argument funkcie setInterval by mal byť funkcia alebo reťazec (horší variant).
Ty tam zadávaš až návratovú hodnotu funkcie nahodnypohyb.
Teda pre opakovanie po 1 s:
setInterval(f, 1000); // kde f je nejaká funkcia, alebo:
setInterval(function(){/* nejaký spustiteľný kód */}, 1000);
skor
Profil
Jak to mám teda opravit a kde?
_es
Profil
skor:
K oprave máš úplné informácie.
Snaž to trochu aj pochopiť a nečakať, že ti niekto poradí úplne všetko.
skor
Profil
opravil jsem to takto a stejně nefunguje:
<html>
<head>
<title>horní lišta</title>
<style>
#logo {border-width:2px;
border-style:double;
border-color:red;  
width:150px;
height:150px;}
#logo-kruh {position:absolute;
left:0px;
top:0px;}
</style>   
<script>
var zleva=0;
var zhora=0;
function nahodnypohyb(co)
{
doleva=Math.ceil(Math.random()*3)-2+zleva;
dolu=Math.ceil(Math.random()*3)-2+zhora;
document.getElementById(co).style.top=dolu+"px";
document.images[co].style.left=doleva."px";
zleva=doleva;
zhora=dolu;
};
function zacni(casto,co){interval=setInterval(function(){nahodnypohyb(co)},casto)} 
</script>
</head>
<body>
<script>zacni(1000,"logo-kruh")</script>
<table align="left" id="logo"><tr><td>&nbsp<img src=logo-kruh.gif id=logo-kruh></td></tr></table>
</body>
</html>
_es
Profil
skor:
Skontroluj si celý kód na všetky chyby.
Mimochodom funkcia nahodnypohyb je definovaná dosť divne.
Asi by mala byť univerzálna na použitie na viaceré objekty súčasne, no keďže používa globálne premenné, tak by sa tie premenné pre viaceré objekty súčasne "bili".
skor
Profil
Prošel jsem to asi desetkrát a žádnou chybu nevidím, právě proto jsem to sem dal do diskuse.
Ale jinak ti děkuji za pomoc.
Moab
Profil
Má tam bejt
setInterval("nahodnypohyb(co)",casto)
ten zbytek jsem nekontroloval
_es
Profil
Moab:
Má tam bejt
Nemá, to nie je dobrý variant, aj keď funguje.

skor:
Čo má asi tak robiť ten príkaz na 22. riadku druhého kódu?
Chamurappi
Profil
Reaguji na _es:
to nie je dobrý variant, aj keď funguje
Řekl bych, že v tomto případě ani nefunguje, protože řetězec se vyhodnotí v globálním kontextu a tam „co“ neexistuje.


Reaguji na skora:
Moaba ignoruj.
Ten 22. řádek skutečně bije do očí.
skor
Profil
Ten 22.řádek tam byl původně napsán jako 21. řádek,ale pak jsem zkoušel různý změny a tahle blbost tam zůstala, takže tou to není.
Moabe je to nejspíš špatně ale děkuji.
Chamurappi tobě taky děkuju hodně si pomohl.
_es
Profil
skor:
a tahle blbost tam zůstala, takže tou to není.

Ak je vo funkcii takáto syntaktická chyba, tak potom nenastane definovanie celej funkcie a teda nemôžu byť spustené ani skoršie ani neskoršie príkazy vo funkcii.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: