tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
548
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    user2580 user2580 ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    9
    Hallo,
    ich habe ein Problem mit window.settimeout und währe sehr dankbar, wenn mir da Jemand von euch weiterhelfen könnte.

    Das Problem liegt daran, dass sich die Methode CountdownAnzeigen() nicht selbst aufrufen lässt.

    Wenn ich die Methode in eine Funktion umwandle geht es problemlos.

    Naja hier der Code der Klasse, der Aufruf mit settimeout steht ganz unten.
    PHP-Code:

    function Countdown(CountJahr,CountMonat,CountTag,CountStunde,CountMinute,CountSekunde){
     
    this.CountdownJahr    CountJahr;
     
    this.CountdownMonat   CountMonat;
     
    this.CountdownTag     CountTag;
     
    this.CountdownStunde  CountStunde;
     
    this.CountdownMinute  CountMinute;
     
    this.CountdownSekunde CountSekunde;    
     
    this.CountdownAnzeigen();
    }

    Countdown.prototype.CountdownAnzeigen = function(){
        var 
    Jetzt = new Date();
        var 
    Countdown = new Date(this.CountdownJahrthis.CountdownMonat-1this.CountdownTagthis.CountdownStundethis.CountdownMinutethis.CountdownSekunde);
        var 
    MillisekundenBisCountdown Countdown.getTime()-Jetzt.getTime();
        var 
    Rest Math.floor(MillisekundenBisCountdown/1000);
        var 
    CountdownText "";
        var 
    Tageh 0;
        
        if(
    MillisekundenBisCountdown <= 0)CountdownText "abgelaufen";

        if(
    Rest >= 31536000)
        {
            var 
    Jahre Math.floor(Rest/31536000);
            
    Rest Rest-Jahre*31536000;

            if(
    Jahre || Jahre == 0)
            {
                
    //CountdownText += Jahre + " Jahre ";
            
    }
            else if(
    Jahre == 1)
            {
                
    //CountdownText += Jahre + " Jahr ";
            
    }
        
        }
        if(
    Rest >= 86400)
        {
            var 
    Tage Math.floor(Rest/86400);
            
    Rest Rest-Tage*86400;

            if(
    Tage || Tage == 0)
            {
                
    //CountdownText += Tage + " Tage ";
                
    Tageh Tage 24;
            }
            else if(
    Tage == 1)
            {
                
    //CountdownText += Tage + " Tag ";
                
    Tageh Tage 24;
            }
        }
        if(
    Rest >= 3600)
        {
            var 
    Stunden Math.floor(Rest/3600);
            
    Rest Rest-Stunden*3600;

            if(
    Stunden || Stunden == 0)
            {
                
    CountdownText += Stunden Tageh "h ";
            }
            else if(
    Stunden == 1)
            {
                
    CountdownText += Stunden Tageh "h ";
            }
        }
        if(
    Rest >= 60)
        {
            var 
    Minuten Math.floor(Rest/60);
            
    Rest Rest-Minuten*60;

            if(
    Minuten || Minuten == 0)
            {
                
    CountdownText += Minuten "m ";
            }
            else if(
    Minuten == 1)
            {
                
    CountdownText += Minuten "m ";
            }
        }

        if(
    Rest || Rest == 0)
        {
            
    CountdownText += Rest "s ";
        }
        else if(
    Rest==1)
        {
            
    CountdownText += Rest "s ";
        }

        
    document.getElementById("test").innerHTML CountdownText;
        
    window.setTimeout("this.CountdownAnzeigen()"1000);


    Und hier die HTML Datei mit der ich das Objekt erstelle.
    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    title>Javasript</title>
    <
    script type "text/javascript" src "start.js"></script>
    <script type = "text/javascript" >

    </script>
    <meta name="description" content=""/>
    <meta name="keywords"    content=""/>
    </head>
    <body >
    <div id="wrapper">
    <div id="header"></div>
      <div id="content">
        <div id="test"></div>
      </div>

      </div>
     </body>
    </html>
    <script type="text/javascript">
            var objectA = new Countdown(2009,5,2,10,40,10);
    </script> 
    Vielen dank an Alle die mir helfen möchten.
    MFG
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    versuch das Setzen des Timeouts mal so:
    Code javascript:
    1
    2
    
    var countdown = this;
    window.setTimeout(function() { countdown.CountdownAnzeigen(); }, 1000);
    Das Problem ist, dass sich das this in deinem Code auf das window-Objekt bezieht. Durch das Closure gibst du das Objekt explizit an.

    Grüße, Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    user2580 user2580 ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    9
    super hat geklappt DANKE!!
     

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 10.06.10, 17:48
  2. Antworten: 2
    Letzter Beitrag: 16.01.07, 23:33
  3. Antworten: 2
    Letzter Beitrag: 02.01.07, 16:27
  4. Antworten: 2
    Letzter Beitrag: 06.02.06, 19:57
  5. Antworten: 1
    Letzter Beitrag: 09.09.05, 12:59