Diskuze: Zavolání funkce

JavaScript JavaScript Zavolání funkce

Avatar
David Moškoř:

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. září 14:51
Všechno jde, když se chce!
Avatar
Oxtimus
Člen
Avatar
Odpovídá na David Moškoř
Oxtimus:

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. září 14:58
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na David Moškoř
Honza Bittner:

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. září 17:14
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na David Moškoř
Honza Bittner:

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. září 17:19
Nahoru Odpovědět 11. září 17:17
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Odpovídá na Oxtimus
David Moškoř:

Díky už mě to funguje

Nahoru Odpovědět 11. září 18:52
Všechno jde, když se chce!
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.