Markus P.: kleines Script , aber wo ist der Fehler ?

Hi,
ich hab vorgestern eine Message gepostet ,bei der es um ein Script ging, daß alle halbe Sekunden einen Buchstaben von einem Text hinschreibt ,bis der Text vollständig dasteht.Ich habe als eine der möglichen Antworten das folgende Script bekommen. Ich bekomme aber andauerd die Fehlermeldung : Objekt erwartet Zeile 1 Zeichen 1 und ich kann mir aber nicht erklären woran der Fehler liegt ? . Noch weniger versteh ich warum Zeile 1 Zeichen 1 ?
<html>
<head>
  <title>test</title>
</head>
<body text="black">
<script language="JavaScript">

var textdaten = "Das ist ein Test";
 window.setTimeout("Tippen(1)",500);

function Tippen(i)
 {
   document.write(textdaten.substring(i-1,i));
   window.setTimeout("Tippen('+(i+1)+')",500);
 }
</script>
</body>
</html>

  1. Hallo!

    Das Problem ist, dass du ein Leerzeichen vor "var" hast, wenn du das weg machst, geht's. Aber mit document.write() überschreibst du die gesamte Datei, deswegen nimmst du dir am besten einen div, den du überschreibst:

    <html>
    <head>
    <title>test</title>
    <style type="text/css">
    <!--
    .div{position:absolute;}
    //-->
    </style>
    <script language="JavaScript">
    <!--
    var textdaten = "Das ist ein Test";
    function Tippen(i)
    {
    aktuell = textdaten.substring(0,i); /* Zeichen eins bis Zeichen i */
    if(document.all)
    document.all['ticker'].innerText = aktuell; /* fuer den ie */
    else if(document.layers)
    {
    document.layers['ticker'].document.open()
    document.layers['ticker'].document.write(aktuell) /* fuer den nn4.7 */
    document.layers['ticker'].document.close()
    }
    else if(document.getElementById)
    document.getElementById('ticker').innerHTML = aktuell; /* fuer den mozilla */
    if(i <= textdaten.length) /* fragt ab, ob es noch Buchstaben gibt, ansonsten wird abgebrochen */
    window.setTimeout('Tippen('+(i+1)+')',500);
    }
    //-->
    </script>
    </head>
    <body text="black" onLoad="Tippen(1)">
    <div id="ticker" class="div"> </div>
    </body>
    </html>

    Funktioniert im ie5, nn4.7 und mozilla 0.9.3, im opera5.12 nicht.

    bye
    Steffen

    1. 'Morgen zusammen

      Das Problem ist, dass du ein Leerzeichen vor "var" hast, wenn du das weg machst, geht's.

      Bei mir führt das Leerzeichen zu keiner Verhaltensänderung - geht mit und ohne nicht (IE5.0).

      Aber mit document.write() überschreibst du die gesamte Datei, deswegen nimmst du dir am besten einen div, den du überschreibst:

      oder Du schreibst das ganze in ein Formular-Eigabefeld, dann brauchst Du kein document.write und es funktioniert bei allen Browsern:

      <body>
      <script language="JavaScript">

      var textdaten = "Das ist ein Test"; i=1;

      interv = window.setInterval("Tippen()",500);

      function Tippen()
        {
        document.forms[0].testfeld.value=textdaten.substring(0,i);
        i++;
        if(i > textdaten.length) window.clearInterval(interv);
      }

      </script>

      <form>
      <input type="Text" name="testfeld" value="" size="" maxlength="">
      </form>

      </body>

      grüße
      axel

      1. Hallo!

        Bei mir führt das Leerzeichen zu keiner Verhaltensänderung - geht mit und ohne nicht (IE5.0).

        Das stimmt, ich wollte ihm nur diese Fehlermeldung erklären:

        Ich bekomme aber andauerd die Fehlermeldung : Objekt erwartet Zeile 1 Zeichen 1

        oder Du schreibst das ganze in ein Formular-Eigabefeld, dann brauchst Du kein document.write und es funktioniert bei allen Browsern:

        Ja, das ist eine Möglichkeit, nur sieht man dann, dass es ein input ist, was evtl. nicht gewünscht ist.

        bye
        Steffen

        1. Hi,
          danke für eure Antworten ,eure Lösungen funktionieren beide ,nur noch eins Steffen ,wozu dient das getElementByID ,weil ja die Lösung mit document.all['ticker.... doch auch im IE5 funktioniert .

          1. Hallo!

            wozu dient das getElementByID ,weil ja die Lösung mit document.all['ticker.... doch auch im IE5 funktioniert .

            document.getElementById ist für den mozilla und für den nn6 - ob's im nn6 funktioniert, kann ich aber nicht testen, weil ich den gerade nicht da habe.

            bye
            Steffen

            1. document.getElementById ist für den mozilla und für den nn6 - ob's im nn6 funktioniert, kann ich aber nicht testen, weil ich den gerade nicht da habe.

              Hi,
              hmmm ,jetzt bin ich aber ein wenig verwirrt ,da doch Mozilla der Spitzname für IE und NN ist .Deswegen hab ich auch gefragt .Wenn ich auf SelfHTML zitieren darf :
              ..
              Sowohl Netscape als auch der MS Internet Explorer speichern in dieser Eigenschaft den Wert "Mozilla".

              Hier kann man auch die Liste der verschiedenen Browser finden ,und die meisten werden hier Mozilla genannt.
              http://www.teamone.de/selfhtml/tech.htm#a7

              1. Hallo!

                Wenn ich vom mozilla rede, meine ich den mozilla ;-)
                Siehe http://www.mozilla.org/

                bye
                Steffen

                1. Hallo!

                  Wenn ich vom mozilla rede, meine ich den mozilla ;-)
                  Siehe http://www.mozilla.org/

                  Asoooooo =)
                  Hab gar nicht gewusst das es auch einen extra Mozilla Browser gibt ,ausserdem weis ich gar nicht welche Befehle dieser interpretiert oder nicht ,aber ehrlich gesagt werd ich sicher nicht dafür auch noch extra umschreiben. es genügt ja scho die NN ,IE Differenz

                  1. Hallo!

                    Hab gar nicht gewusst das es auch einen extra Mozilla Browser gibt ,ausserdem weis ich gar nicht welche Befehle dieser interpretiert oder nicht ,aber ehrlich gesagt werd ich sicher nicht dafür auch noch extra umschreiben. es genügt ja scho die NN ,IE Differenz

                    Da sich der mozilla sehr stark an den Standard hält und dem nn6 sehr stark ähnelt, lohnt es sich durchaus, für den mozilla zu schreiben: eine Investition in die Zukunft sozusagen ;-)

                    bye
                    Steffen

                  2. Hallo Markus!

                    Wenn ich vom mozilla rede, meine ich den mozilla ;-)
                    Siehe http://www.mozilla.org/
                    Asoooooo =)
                    Hab gar nicht gewusst das es auch einen extra Mozilla Browser gibt ,ausserdem weis ich gar nicht welche Befehle dieser interpretiert oder nicht ,aber ehrlich gesagt werd ich sicher nicht dafür auch noch extra umschreiben. es genügt ja scho die NN ,IE Differenz

                    Mozilla war immer der Spitzname von Netscape. Als Microsoft seinen Internet Explorer auf den Markt warf, haben Sie den Namen "Mozilla ... (compatible;)" eingefuehrt, damit er durch Browserabfragen nicht herausgefiltert wird. So habe ich es irgendwo gelesen, bitte um Berichtigung und um Nachsicht, wenn es nicht 100%-ig, aber in etwa ist die Geschichte wiedergegeben.

                    Mozilla (als Anlehnung an Godzilla, dem japanischen Filmmonster, den es schon sehr lange gibt) wird dargestellt durch einen kleinen gruenen Drachen.

                    Wenn man jetzt unter Webworkern von Mozilla spricht, so meint man, wie Steffen richtig vermerkt hat, die Entwicklungen des Browsers, der spaeter (vielleicht) wieder den Namen Netscape tragen wird (wie Netscape 6 - eine 5 gab es wegen zu grossen Rueckstand im Vergleich zu den Entwicklungen des Microsoft-Browsers gar nicht *gg*).

                    Patrick

  2. Sers,
    Mit dem Script würde ich sehr sehr vorsichtig sein - du hast da nämlich eine sogenannte rekursive Funktion - d.h. eine Funktion die sich selbst aufruft, das ist extrem schlecht und kann schnell zu Überläufen führen!
    Leider hab' ich mich mit write() befehlen noch nicht wirklich beschäftigt, deswegen kann ich dir nur in einem Punkt helfen: Verwende ein ganz anderes Script!!! Ich hab mindestens 5 Fehler auf den Ersten Blick gefunden...