IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zavolání funkce

Aktivity
Avatar
David Moškoř:11.9.2016 14:51

Dobrý den, mám script aby se mi textový smajlík přepsal na obrázkový:

<!DOCTYPE html>
<html lang='cs'>
  <head>
    <title>Zkouška</title>
    <meta charset='utf-8'>
  </head>
  <body>
 <script language="javascript">
function smile1(){
var str = document.getElementById("content").innerHTML;
var premena1 = str.replace(/:-\)/gi, '<img src="images/x1.gif">');
document.getElementById("content").innerHTML = premena1;
}
function smile3(){
var str = document.getElementById("content").innerHTML;
var premena3 = str.replace(/:-\(/gi, '<img src="images/x3.gif">');
document.getElementById("content").innerHTML = premena3;
}
  </script>
        <div id="content">
  :-) :-(
  </div>
  </body>
</html>

Mám v něm dvě funkce. Na šťastného smajlíka a na smutného. Když je obě zavolám takto:

smile1();
smile3();

Mělo by mi to fungovat, ale nefunguje poradíte mi prosím?

Odpovědět
11.9.2016 14:51
Život je příliš krátký na to, abyste vymýšleli smysluplné názvy proměnných...
Avatar
Michal
Člen
Avatar
Odpovídá na David Moškoř
Michal:11.9.2016 14:58

Mně to funguje. Ujisti se, že ty dvě funkce voláš až po načtení stránky. Pro jistotu je umísti do window.onload:

window.onload = function() {
   smile1();
   smile3();
};
Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět
11.9.2016 14:58
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na David Moškoř
Honza Bittner:11.9.2016 17:14

Pravděpodobně to je tím, že se tvůj skript spustí dříve, než se sestaví DOM (tj. než se z HTML vygeneruje stránka). Sestavování totiž probíhá po řádcích, ze shora dolu.

Pokud si toto nepřeješ a chceš aby se tvůj script spustil správně, zabal jej do document ready (DOM je sestaven) nebo window load (načetlo se vše, aj obrázky atp.) funkce, nebo umísti script úplně na konec stránky, tj. před </body>.

Nahoru Odpovědět
11.9.2016 17:14
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na David Moškoř
Honza Bittner:11.9.2016 17:17

Nedávno jsem dělal funkci, která textové smajlíky převede na emotikony (+ ty na twemoji). Tady je kód, tak si jej můžeš upravit podle svého a napasovat to do webu.

Není to sice nejoptimálnější řešení, ale postačí. :-)

http://pastebin.com/iSG23R2T

Editováno 11.9.2016 17:19
Nahoru Odpovědět
11.9.2016 17:17
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Michal
David Moškoř:11.9.2016 18:52

Díky už mě to funguje

Nahoru Odpovědět
11.9.2016 18:52
Život je příliš krátký na to, abyste vymýšleli smysluplné názvy proměnných...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.