Ergebnis 1 bis 7 von 7

Thema: JAVA Countdown will nicht

  1. #1
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235

    JAVA Countdown will nicht

    Ich stehe mal wieder auf den Schlauch und bekomme hier wieder was nicht hin
    Ich hätte gerne eine Countdown dafür habe ich folgenden JAVACode verwendet:
    PHP-Code:
    <?while($blabla = mysql_fetch_array($blablabla)){
    $i++;
    unset($new_endcountdown);
    $new_endcountdown = ($blabla['endzeit'] - time());
    ;?><script language='javascript'>
                    
                    function doCount_<?=$i;?>()
                    {
                    var countdown_<?=$i;?> = <?=$new_endcountdown;?>;
                        var returnvar = '';
                        
                            if (countdown_<?=$i;?> > 0) {
                                countdown_<?=$i;?>--
                                var s = countdown_<?=$i;?>;
                                var d = Math.floor(s/(24*3600));
                                var h = Math.floor((s - (d * 24*3600))/3600);
                                var m = Math.floor((s - (d * 24*3600) - (h * 3600))/60);
                                var sek = Math.floor(s - (d * 24*3600) - (h * 3600) - (m * 60));    
                    
                            if(d != 0) {
                                returnvar = returnvar+d+'d ';
                            }
                            
                            if(h != 0) {
                                returnvar = returnvar+h+'h ';
                            }    
                            
                            if(m != 0) {
                                returnvar = returnvar+m+'min ';
                            }
                    
                            if(sek != 0) {
                                returnvar = returnvar+sek+'s ';
                            }    
                            }
                
                            else {
                                returnvar = 'Fertig';    
                            }                            
                        document.getElementById('countdown_<?=$i;?>').innerHTML = returnvar;
                    
                        window.setTimeout('doCount_<?=$i;?>()',1000)
                    }
                </script>
                <div id='countdown_<?=$i;?>'></div><?}?>
    im Quelltext sieht das ganze dann so aus:
    PHP-Code:
    <script language='javascript'>
                    
                    function 
    doCount_1()
                    {
                    var 
    countdown_1 234;
                        var 
    returnvar '';
                        
                            if (
    countdown_1 0) {
                                
    countdown_1--
                                var 
    countdown_1;
                                var 
    Math.floor(s/(24*3600));
                                var 
    Math.floor((- (24*3600))/3600);
                                var 
    Math.floor((- (24*3600) - (3600))/60);
                                var 
    sek Math.floor(- (24*3600) - (3600) - (60));    
                    
                            if(
    != 0) {
                                
    returnvar returnvar+d+'d ';
                            }
                            
                            if(
    != 0) {
                                
    returnvar returnvar+h+'h ';
                            }    
                            
                            if(
    != 0) {
                                
    returnvar returnvar+m+'min ';
                            }
                    
                            if(
    sek != 0) {
                                
    returnvar returnvar+sek+'s ';
                            }    
                            }
                
                            else {
                                
    returnvar 'Fertig';    
                            }                            
                        
    document.getElementById('countdown_1').innerHTML returnvar;
                    
                        
    window.setTimeout('doCount_1()',1000)
                    }
                </
    script>
                <
    div id='countdown_1'></div>
    <
    script language='javascript'>
                    
                    function 
    doCount_2()
                    {
                    var 
    countdown_2 66;
                        var 
    returnvar '';
                        
                            if (
    countdown_2 0) {
                                
    countdown_2--
                                var 
    countdown_2;
                                var 
    Math.floor(s/(24*3600));
                                var 
    Math.floor((- (24*3600))/3600);
                                var 
    Math.floor((- (24*3600) - (3600))/60);
                                var 
    sek Math.floor(- (24*3600) - (3600) - (60));    
                    
                            if(
    != 0) {
                                
    returnvar returnvar+d+'d ';
                            }
                            
                            if(
    != 0) {
                                
    returnvar returnvar+h+'h ';
                            }    
                            
                            if(
    != 0) {
                                
    returnvar returnvar+m+'min ';
                            }
                    
                            if(
    sek != 0) {
                                
    returnvar returnvar+sek+'s ';
                            }    
                            }
                
                            else {
                                
    returnvar 'Fertig';    
                            }                            
                        
    document.getElementById('countdown_2').innerHTML returnvar;
                    
                        
    window.setTimeout('doCount_2()',1000)
                    }
                </
    script>
                <
    div id='countdown_2'></div>

    ...
    usw
    Leider zeigt er mir keinen Countdown an...einer ne Idee woran es liegen kann?

  2. #2
    Moderator Avatar von Worka
    Registriert seit
    20.05.2007
    Beiträge
    973
    Code:
    countdown_<?=$i;?>--
    Ändern in:
    Code:
    countdown_<?=$i;?>--;


    In der doCount_2 auch.
    StGB § 328 Absatz 2.3: Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.

  3. #3
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Java != Javascript, um das anzumerken

    Also zum JS Code:


    1. wird die Funktion do_CountX() irgendwo initial aufgerufen? Im onload= Event bspw., wenn die nicht aufgerufen wird, kanns ja gar nichte rst losgehen
    2. wird sie aufgerufen, wird schon ein Countdown angezeigt, nur dass der bei jedem Aufruf immer mit dem selben Wert rechnet (var countdown_1X=), Daher sieht man keine Veränderung, diese Variable muss ausserhalb der Funktion deklariert werden, dann sollte an sich alles passen.

    EDIT: jo @worka, grundsätzlich sollte man am Ende einer Anweisung ein ; setzen, muss man aber nicht, Zeilenumbruch reicht da meist auch, ich bin mir nicht 100% sicher, meine aber das ist sogar offiziell so, also kanns daran wohl nicht liegen.

    EDIT2: Kollege hält mir grad Vortrag drüber, dass das tatsächlich weggelassen werden kann laut ECMA-I
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  4. #4
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    Zitat Zitat von jpwfour Beitrag anzeigen

    1. wird die Funktion do_CountX() irgendwo initial aufgerufen? Im onload= Event bspw., wenn die nicht aufgerufen wird, kanns ja gar nichte rst losgehen
    2. wird sie aufgerufen, wird schon ein Countdown angezeigt, nur dass der bei jedem Aufruf immer mit dem selben Wert rechnet (var countdown_1X=), Daher sieht man keine Veränderung, diese Variable muss ausserhalb der Funktion deklariert werden, dann sollte an sich alles passen.
    Zu 1. Mit onload hatte ich probiert allerdings wird dann nur der 1te Code aus der whileschleife angezeigt, ich editiere nochmal den ersten Post mit bisschen mehr Code.

    edit: dachte das es hier dann losgeht:
    window.setTimeout('doCount_<?=$i;?>()',1000)

    Zu 2.
    PHP-Code:
    var countdown_<?=$i;?> = <?=$new_endcountdown;?>;

    $new_endcountdown wird dabei in der while schleife erzeugt.
    Um den Wert geht es mir auch nicht sondern um den Countdown der nicht startet

  5. #5
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    hm, funktion sollte aufgerufen werden und die variable ausserhalb der funktion deklariert, und dann gehts, probiers einfach mal aus

    Beim Aufruf muss dem JS das Element bekannt sein mit der ID daher bietet sich onload an.

    Variante 1 die gehen sollte:
    HTML-Code:
                <div id='countdown_1'></div>
    <script language='javascript'>
         var countdown_1 = 234;           
                    function doCount_1()
                    {
                    
                        var returnvar = '';
                        
                            if (countdown_1 > 0) {
                                countdown_1-- 
                    var s = countdown_1;
                                var d = Math.floor(s/(24*3600));
                                var h = Math.floor((s - (d * 24*3600))/3600);
                                var m = Math.floor((s - (d * 24*3600) - (h * 3600))/60);
                                var sek = Math.floor(s - (d * 24*3600) - (h * 3600) - (m * 60));    
                    
                            if(d != 0) {
                                returnvar = returnvar+d+'d ';
                            }
                            
                            if(h != 0) {
                                returnvar = returnvar+h+'h ';
                            }    
                            
                            if(m != 0) {
                                returnvar = returnvar+m+'min ';
                            }
                    
                            if(sek != 0) {
                                returnvar = returnvar+sek+'s ';
                            }    
                            }
                
                            else {
                                returnvar = 'Fertig';    
                            }                            
                        document.getElementById('countdown_1').innerHTML = returnvar;
                    
                        window.setTimeout('doCount_1()',1000)
                    }
            
            window.setTimeout('doCount_1()',1000);
                </script>
    Var2 die auch geht, aber eben immer den selben wert anzeigt:
    HTML-Code:
                <div id='countdown_1'></div>
    <script language='javascript'>
            
                    function doCount_1()
                    {
                         var countdown_1 = 234;   
                        var returnvar = '';
                        
                            if (countdown_1 > 0) {
                                countdown_1-- 
                    var s = countdown_1;
                                var d = Math.floor(s/(24*3600));
                                var h = Math.floor((s - (d * 24*3600))/3600);
                                var m = Math.floor((s - (d * 24*3600) - (h * 3600))/60);
                                var sek = Math.floor(s - (d * 24*3600) - (h * 3600) - (m * 60));    
                    
                            if(d != 0) {
                                returnvar = returnvar+d+'d ';
                            }
                            
                            if(h != 0) {
                                returnvar = returnvar+h+'h ';
                            }    
                            
                            if(m != 0) {
                                returnvar = returnvar+m+'min ';
                            }
                    
                            if(sek != 0) {
                                returnvar = returnvar+sek+'s ';
                            }    
                            }
                
                            else {
                                returnvar = 'Fertig';    
                            }                            
                        document.getElementById('countdown_1').innerHTML = returnvar;
                    
                        window.setTimeout('doCount_1()',1000)
                    }
            
            window.setTimeout('doCount_1()',1000);
                </script>
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  6. #6
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    komisch Var1 funktioniert obwohl ich mir eigentlich ziemlich sicher bin das ich es mit setTimeout auch so probiert habe oder hat es auch was damit zu tun das du <div id='countdown_1'></div> vor den JavaScript gemacht hast?

    Naja jetzt geht es jedenfalls danke.
    Kann man auch irgendwie nach returnvar = 'Fertig'; nen db_query einfügen?

  7. #7
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Jo wenn es davor ist und dann die Funktion erst 1 Sekunde später aufgerufen wird, dann "findet" Javascript das Element auch meist.

    So:
    HTML-Code:
    <body onload="doCount_1();doCount_2();">
    
    <script language='javascript'>
                             var countdown_1 = 234;       
                    function doCount_1()
                    {
    
                        var returnvar = '';
                        
                            if (countdown_1 > 0) {
                                countdown_1-- 
                    var s = countdown_1;
                                var d = Math.floor(s/(24*3600));
                                var h = Math.floor((s - (d * 24*3600))/3600);
                                var m = Math.floor((s - (d * 24*3600) - (h * 3600))/60);
                                var sek = Math.floor(s - (d * 24*3600) - (h * 3600) - (m * 60));    
                    
                            if(d != 0) {
                                returnvar = returnvar+d+'d ';
                            }
                            
                            if(h != 0) {
                                returnvar = returnvar+h+'h ';
                            }    
                            
                            if(m != 0) {
                                returnvar = returnvar+m+'min ';
                            }
                    
                            if(sek != 0) {
                                returnvar = returnvar+sek+'s ';
                            }    
                            }
                
                            else {
                                returnvar = 'Fertig';    
                            }                            
                        document.getElementById('countdown_1').innerHTML = returnvar;
                    
                        window.setTimeout('doCount_1()',1000)
                    }
            
            function doCount_2()
                    {
                alert(11);
            }
            
    
                </script>
    <div id='countdown_1'></div>
    </body>
    sollte es aber auch funktionieren.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

Ähnliche Themen

  1. [HTML/CSS/JS] Nach Klick Countdown
    Von blacky123 im Forum [HD] Programmieren
    Antworten: 1
    Letzter Beitrag: 16.06.2011, 23:07
  2. [HTML/CSS/JS] Falls java nicht html anzeigen
    Von Basell im Forum [HD] Programmieren
    Antworten: 1
    Letzter Beitrag: 23.02.2011, 17:01
  3. Startseiten Countdown bei Vergütung
    Von blacky123 im Forum [HD] Codeschnippsel
    Antworten: 13
    Letzter Beitrag: 04.11.2009, 19:56
  4. [HTML/CSS/JS] Countdown beim Bettellink
    Von st.pauliblau im Forum [HD] Programmieren
    Antworten: 4
    Letzter Beitrag: 20.05.2008, 22:14
  5. Countdown bis zur Verütung !
    Von Koki12 im Forum [HD] Programmieren
    Antworten: 6
    Letzter Beitrag: 24.10.2007, 14:59

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •