phantom: Countdown

Hi ich hab diesn countdown geschieben nur leider gibt er mit ein fehler aus bei der ausgabe.
Was hab ich flasch gemacht?

<script language="Javascript">
<!--
var countdown = "10";

function doCount()
{

if (countdown > 0)
{
    countdown--;
}

document.write(countdown);

window.setTimeout('doCount()',1000)
}

doCount();
//-->
</script>

  1. Hallo.

    ich hab diesn countdown geschieben nur leider gibt er mit ein fehler aus bei der ausgabe. Was hab ich flasch gemacht?
    <script language="Javascript">

    Bitte das zwingend erforderliche type-Attribut nicht vergessen.

    var countdown = "10";

    Wenn du hier gleich loslegst, wird dein Counter nie bei 10 anfangen.

    function doCount()
    [...]
    document.write(countdown);

    Du bist dir offensichtlich nicht im Klaren, was die write-Methode tut. Das document-Objekt bezieht sich auf den Inhalt des Browserfensters. Rufst du nun die Methode write zum ersten Mal auf, wird in das Browserfenster eine "9" geschrieben. Rufst du sie erneut auf, wird der gesamte Inhalt des Browserfensters erneut geschrieben, in deinem Fall schlicht mit einer "8". Und dann ist Schluss mit deinem Countdown, denn eine Funktion doCount() gibt es dann nicht mehr (schau dir spaßeshalber mal den Seitenquelltext an, wenn der Counter wegen des Fehlers stehengeblieben ist).

    Du willst aber den übrigen Inhalt, insbesondere die JS-Funktion doCount() weiter nutzen, bis der Zähler auf "0" steht. Dies geht nur, indem du innerhalb des body ein HTML-Element notierst, dessen Inhalt du durch deine Funktion doCount() nach 1.000 ms überschreibst. Wie du auf HTML-Elemente zugreifst, findest du hier:

    http://selfhtml.teamone.de/javascript/objekte/document.htm#get_element_by_id

    Wie du den Inhalt eines HTML-Elementes, das kein Formularelement ist, beeinflussen kannst, findest du hier (mit Beispiel):

    http://selfhtml.teamone.de/javascript/objekte/node.htm#node_value

    Vielleicht hilft's
    Siechfred

    1. versteh ich leider überhaupt nicht wie ich das dann ausgeben kann!Habs so versucht aber es geht beim besten will nicht!

      <input type="Text" name="" value="unentschlossen" size="" maxlength="">

      <script language="Javascript">
      <!--
      var countdown = "10";

      function docount()
      {

      if (countdown > 0)
      {
          countdown--;
      }

      document.getElementById("unentschlossen").countdown;

      window.setTimeout('docount()',1000);
      }

      docount();
      //-->
      </script>

      1. Hallo.

        versteh ich leider überhaupt nicht wie ich das dann ausgeben kann!Habs so versucht aber es geht beim besten will nicht!

        Bitte schaue dir in Ruhe nochmal die von mir verlinkten Seiten an, besonders das Beispiel zu nodeValue.

        document.getElementById("unentschlossen").countdown;

        Das kann aus zwei Gründen nicht funktionieren. Zunächst gibt es in deinem geposteten Code kein Element mit der ID "unentschlossen", nur eines mit dem _Namen_ "unentschlossen". Weiterhin hat das Element keine Eigenschaft "countdown". Die möglichen Eigenschaften von HTML-Elementobjekten findest du hier:

        http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm

        Du wirst aber feststellen, dass nur Formularelemente einen Eigenschaft namens "value" haben, die für dein Vorhaben interessant wäre. Ich persönlich halte es jedoch für übertrieben, nur für einen Countdown ein Formular zu kreieren, einfacher wäre da z.B. ein

        <p id="unentschlossen">10</p>

        Den Inhalt des Absatzes kannst du dann mit Hilfe von nodeValue beeinflussen:

        document.getElementById("unentschlossen").firstChild.nodeValue = countdown;

        Grüße
        Siechfred

        1. Ich hab es jetzt hinbekommen nur leider gibt es da ein porblem mit den Kommerstellen.
          Was kann ich dagen tun?
          Und ist das richtig um die zeit in Tage Std Min und Sek darzustellen?

          <b id="TagTime">Gebäude</b> - <b id="StdTime">Gebäude</b>:<b id="MinTime">Gebäude</b>:<b id="SekTime">Gebäude</b>

          <script language="Javascript">
          <!--
          var countdown = "10060";

          function docount()
          {

          if (countdown > 0)
                {
                    countdown--;
                }
                else
                {
                    document.write('fertig');
                }

          if(countdown > 86400){ tag = countdown / 86400; }else{ tag = 0; }
                if(countdown > 3600){ std = (countdown / 3600) - tag; }else{ std = 0; }
                if(countdown > 60){ min = (countdown / 60) - tag - std; }else{ min = 0; }
                if(countdown > 86400){ sek = countdown  - tag - std - sek; }else{ sek = 0; }

          document.getElementById("TagTime").firstChild.nodeValue = tag;
                document.getElementById("StdTime").firstChild.nodeValue = std;
                document.getElementById("MinTime").firstChild.nodeValue = min;
                document.getElementById("SekTime").firstChild.nodeValue = sek;

          window.setTimeout('docount()',1000);
          }

          docount();
          //-->
          </script>

          1. Hallo.

            Und ist das richtig um die zeit in Tage Std Min und Sek darzustellen?

            Schau dir das Date-Objekt und seine Methoden an:

            http://selfhtml.teamone.de/javascript/objekte/date.htm

            und kombiniere es mit deiner bisherigen Lösung.

            Grüße
            Siechfred

  2. Was hab ich flasch gemacht?

    Das a und das l vertauscht ;-)

    Der war einfach, noch einer bitte...

    Gruß,
    Lutz

    1. Tach,

      Das a und das l vertauscht ;-)

      das ist falhsc:
      [Zitat Cheatah]
      Flhacs wird im Usenet grundsätzlich alsfhc geschrieben. Schreibt man lafhsc nicht slfach, so ist das schlichtweg hclafs. Hingegen darf man rihctig ruhig rhitcgi schreiben, weil eine shcalfe Schreibweise bei irhictg nicht als shflac angesehen wird.

      mfg
      Woodfighter

      1. ja es gibt auch leude die einfach nur ARSCHLÖCHER sind!

        1. Tach,

          ja es gibt auch leude die einfach nur ARSCHLÖCHER sind!

          das ist ja hier wohl unpassend (auch wenn ich diese Aussage vermutlich als wahr ansehen würde).
          Ein bißchen Spaß muß hin und wieder sein und dein ursprüngliches Problem war zum Zeitpunkt des Scherzes sogar schon gelöst.

          mfg
          Woodfighter

          1. nein mein probelm war nicht gelöst ich hatte darauf gleich ein neues UND es ist noch immer nicht gelöst!

            1. Tach,

              nein mein probelm war nicht gelöst ich hatte darauf gleich ein neues UND es ist noch immer nicht gelöst!

              mir brauchst du das nicht erzählen, weil ich dir sicher nicht mehr helfen werde.

              mfg
              Woodfighter