• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[Hilfe] Timer

Status
Für weitere Antworten geschlossen.

Servrox

Neues Mitglied
Habe hier ein eigentlich recht simples Beispiel, welches aber leider nicht im Firefox-Browser funktionieren möchte!? :?
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                  "http://www.w3.org/TR/html4/transitional.dtd">
            <html>
            <head>
                <title>Meine erste Test-Seite</title>
                <script language="JavaScript" type="text/javascript">
                var insgesamt = 0;

                function init()
                {
                    var myobj = document.getElementById("id1");
                    myobj.style.position = "absolute";
                    myobj.style.left = 0;                        
                }
                
                function doit()
                {
                    var myobj = document.getElementById("id1");
                    myobj.style.left = insgesamt * 5;
                    insgesamt++;
                    if (insgesamt < 100)             
                    {
                        window.setTimeout('doit();', 50);
                    }
                }
                    
                </script>
            </head>
            <body onLoad="init();">
                <div id="id1">|||||||||||-||||||||||-||||||||||</div>
                <br><br><p onClick="doit()">Go!</p>        
            </body>
            </html>
 
hm, also wenn ich left eine einheit gebe (z.B. px) funtioniert es noch weniger, d.h. der abstand von "0" ist nicht einmal mehr gegeben (init function), was ohne einheitengebung funktioniert. ??
außerdem funktioniert der code im IE ja, was muss ich also ändern das er im MF auch geht!?

in der fehlerkonsole kann ich disen fehler nicht finden (habe aber sonst auch noch nie danach geschaut)...
 
ich habe ienfach hinter die zahl "px" geschrieben. bei der doit() function hab ich ne klammer um die multiplikation un dann "px". aber die doit() function wird ja irgendwie gar nicht aufgerufen!?
 
Also so?

Code:
myobj.style.left = insgesamt * 5px;

Dann hast Du etwas falsch gemacht :]

Ob eine Funktion aufgerufen wird oder nicht kannst Du z.B. durch eine einfache alert()-Ausgabe am Anfang der betreffenden Funktion herausbekommen.
 
Code:
myobj.style.left = (insgesamt * 5)px;

so hatte ichs gemacht.

ahja und der test mit der alert()-Ausgabe hat bestätigt, das sie nicht aufgerufen wird.
 
Vermutlich wird sie nicht erst ausgeführt, weil Du einen gravierenden Fehler eingebaut hast. Du musst es so schreiben:

Code:
myobj.style.left = (insgesamt * 5) + "px";

Warum? Weil px eine String ist und auch als solche angegeben werden muss.
 
aaaaalso wenn ich das mit der px-Angabe (welche vermutlich falsch ist) rauslasse funktioniert es soweit, d.h. beide funktionen werden aufgerufen. es wird auch wie in der init() festgelegt (left 0) richtig ausgegeben, nur das bewegen geht nicht.

ah ok ich teste es mal
 
ok nun funtioniert alles, danke soweit, nur das bewegen eben nicht.
also bis auf die syntaxmäßige Verbesserung meines codes hat sich nichts geändert.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                  "http://www.w3.org/TR/html4/transitional.dtd">
            <html>
            <head>
                <title>Meine erste Test-Seite</title>
                <script language="JavaScript" type="text/javascript">
                var insgesamt = 0 + "px";

                function init()
                {
                    var myobj = document.getElementById("id1");
                    myobj.style.position = "absolute";
                    myobj.style.left = 0 + "px";                        
                }
                
                function doit()
                {
                     var myobj = document.getElementById("id1");
                    myobj.style.left = (insgesamt * 5) + "px";
                    insgesamt++;
                    if (insgesamt < 100)             
                    {
                        window.setTimeout('doit();', 50);
                    }
                }
                </script>
            </head>
            <body onLoad="init();">
                <div id="id1">|||||||||||-||||||||||-||||||||||</div>
                <br><br><p onClick="doit()">Go!</p>        
            </body>
            </html>
 
so fixed.. :D
wens interessiert:
Code:
                var insgesamt = 0;

                function init()
                {
                    var myobj = document.getElementById("id1");
                    myobj.style.position = "absolute";
                    myobj.style.left = insgesamt + "px";                        
                }
                
                function doit()
                {
                    var myobj = document.getElementById("id1");                    
                    myobj.style.left = (insgesamt * 5) + "px";
                    var bla = 0;
                    insgesamt++;
                    if (insgesamt < 100)             
                    {
                        window.setTimeout('doit();', 50);
                    }
                }
man kann "0px" natürlich nicht multiplizieren.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben