Autor Zpráva
CASO
Profil *
chcem sa opytat, vlastne este viac menej zacinam no a jedna vec by sa mi hodila len neviem ako na to,... potrebujem vykonat javascriptovu funkciu bez toho aby ju vykonavala nejaka udalost,.. priklad:
.
//nejaky php kod, urcujuci ci $riadok_exists je TRUE
.
if($riadok_exists) {
?>
<body onLoad="nevidene('prvok')">
<?
}
else {
?>
<body>
<?
}
?>

--> funkcia nevidene(id) sa vykona podla toho ifu,... a ako vidite vykona sa v podstate cez udalost onLoad ale ja by som chcel toto (spodny skript), aby to nebolo take komplikovane ako som to urobil hore, sice mi to funguje ale chcel by som vediet ci sa daj funkcia js vykonat bez udalosti a ako?
.
//nejaky php kod, urcujuci ci $riadok_exists je TRUE
.
if($riadok_exists) {
?>
<script>
nevidene('prvok');
</script>
<?
}
?>
<body>
.
//atd takto to nefunguje
.
Joker
Profil
CASO
potrebujem vykonat javascriptovu funkciu bez toho aby ju vykonavala nejaka udalost
Javascriptovou funkci jde volat i normálně z kódu stránky, příklad:
(...)
<body>
<p>nějaký text</p>
<script type="text/javascript">funkce();</script>
(...)

V takovém případě se funkce zavolá při načítání stránky.
CASO
Profil *
Joker:
ta funkcia vyssie co som pouzil je tato:

function nevidene(id) {
document.getElementById(id).style.visibility="hidden";
}

//blabla
<body>
<script>
nevidene('prvok');
<script>
.
//blabla
.
</body>

-> tak to je v praxi to co si napisal, ibaze mne to nefunguje
Joker
Profil
CASO
mne to nefunguje
Asi to bude rozbitý, aneb není nad detailní popis.

Jestli ale on problém nebude třeba v tom, že se snažíte pracovat s neexistujícím prvkem?
Protože pokud tam skutečně je:
<body>
<script>
nevidene('prvok');
<script>

tak těžko může někde předtím být prvek s id="prvok"
peta
Profil
CASO
www prohlizec - JS konzola (nastroje - chybova konzola / zluty vykricnik v IE)
Co to pise za chybu? Bez toho se nikam nedostanem.
CASO
Profil *
tak tu kopirujem cely skript trochu som ho zuzil o nepotrebne informacie aj ked by som mohol viac,.. ale pripadne si ho mozte spustit a uvidite,.. vlastne dosiahnut chcem aby sa mi ta funkcia teda aby prebehla bez problemu,... dik za tu konzolu dolu som skopiroval chybu

<html>
<head>
<title>
</title>
<script type="text/javascript" language="javascript">
function nevidene() {
document.getElementById('radio1').style.visibility="hidden";
document.getElementById('span_existujucej').style.visibility="hidden";
}
</script>

</head>

<body>
<script>
nevidene();
</script>
<form name="moj_formular" method="post" action="pridaj_clanok.php">
<table border="0">
<tr> <td> Názov Článku (max 30 zn.) </td> <td> Pridať článok do kategórie</td> </tr>
<tr> <td> <input type="text" maxlength="30" name="name_article" size="93" value="názov článku"
onfocus="if(this.value=='názov článku') this.value=''"> </td>
<td> <span style="float: left;"> novej </span><span id="span_existujucej" style="float: right;"> existujúcej </span></td></tr>
<tr> <td> Článok </td>
<td> <input id="radio1" style="float: right;" name="druh_kat" value="nova_kat" type="radio"
onClick="document.moj_formular.kategorie.style.display='block',document.moj_formular.vyt_kat.style.display='none'">

<input id="radio2" style="float: left;" name="druh_kat" value="stara_kat" type="radio" checked
onClick="document.moj_formular.vyt_kat.style.display='block',document. moj_formular.kategorie.style.display='none'"> </td></tr>
<tr> <td> <textarea name="body_article" cols="70" rows="20" wrap="soft">text článku</textarea></td>
<td valign="top">
<select style="width: 100%; display: none;" name="kategorie" size="1">
<option value="je jedno">dve
</select>
<input style="width: 100%;" type="text" maxlength="30" name="vyt_kat" value="nová kategória"
OnClick="if(this.value=='nová kategória')this.value='';">
</td></tr>
<tr> <td> <input type="submit" value="pridaj"> </td> </tr>
</table>
</form>
</body>
</html>

Chyba: document.getElementById("radio1") has no properties
Zdrojový soubor: http://localhost/lol.php
Řádek: 7
CASO
Profil *
zabudol som zvyraznit este hned za <body> je ten <script> </script> to je dolezite
CASO
Profil *
no cize ked toto:

<body>
<script>
nevidene();
</script>


vymenim za toto:

<body onLoad="nevidene();">


tak to funguje - bez chyby,.. preto si lamem nad tym hlavu ze vlastne JS funkcia funguje iba pri nejakej udalosti ???
Jan Tvrdík
Profil
CASO
Zkus dát ten script na konec:
<body>
(...)
<script>
nevidene();
</script>
</body>
CASO
Profil *
Jan Tvrdík
aha, funguje
takže z toho mám usúdiť že JS nenájde ID pokiaľ je v dokumente nižšie ako je volaná funkcia? ,.. a inak thx zdá sa že zas budem o niečo múdrejši :)
Jan Tvrdík
Profil
CASO
Příště doporučuji používat Firefox + Firebug
CASO
Profil *
Jan Tvrdík

no akurát čítam článok na intervale o tom,.. a čiže tá dedukcia "že JS nenájde ID pokiaľ je v dokumente nižšie ako je volaná funkcia?" je správna? aby som s tým mohol pracovať,.. nech to že som tu otravoval ľudí má dáky efekt :)
habendorf
Profil
CASO

No jistě. HTML kód se zpracovává postupně od začátku do konce, parser si postupně vytváří stromovou strukturu dokumentu. Jak by podle tebe měl naložit s elementem, o jehož existenci ještě neví?
peta
Profil
CASO
Mno, ono jde o to, co uz kdosi psal nahore. Proste ten prvek jeste neexistuje, takze na nej nemuzes nic uplatnit. Kdezto body onload se provadi az po nacteni obsahu tagu body. Tim padem prvek existuje... Totez, kdyz das script na konec body.

Kopirovani kodu je naprosto zbytecne, neuzitecne, odkaz je lepsi.
Proc?
- jednak toto forum nejake veci mrsi z kodu
- pak nelze pocitat radky (chyba na radku... metoda...), a jeste napises, zes neco smazal, treba to byl zrovna ten sedmy radek

A kdyz jsme u toho, chyba byla zrovna na radku, ktery jsi v prvnim dotazu neuvedl. To se pak tezko hleda.

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: