Palme: if-Schleifen = lahm?

Hallo,

wenn ich innerhalb einer if-Schleife z.B. die Textfarbe allmählich ändern möchte (z.B. von Weiß nach Schwarz), dann klappt das zwar, aber teilweise ziemlich lahm. Die Funktion sollte Anfangs mit setTimeout verzögert werden.
Da mir das aber zu langsam war, setzte ich den Wert der Millisekunden in setTimeout auf null, aber trotzdem war der Ablauf der Schleife viel zu langsam.

Im Mozilla z.B. läuft die Schleife schneller ab als im IE.

Kann man soetwas auch anders realisieren?
Das Script:

if(i<=128){
document.getElementById('rubrik').style.color = 'rgb(128,' + i + ',' + i + ')';

i=i+1;
window.setTimeout("text()",0);
}

}/*function*/

Grüße

Palme

  1. Hallo Palme,

    wenn ich innerhalb einer if-Schleife

    Also ich kenne vielleicht for-, while-, do-while-, do-until- und wenn's denn sein muss auch goto-Schleifen, aber eine if-Schleife ist mir noch nie untergekommen.

    if(i<=128){
    document.getElementById('rubrik').style.color = 'rgb(128,' + i + ',' + i + ')';

    i=i+1;
    window.setTimeout("text()",0);
    }

    Versuch's mal mit "setInterval", vielleicht geht das schneller. Ich finde die Technik der sich immer wieder selbst in einem neuen Thread startenden Funktion ehrlich gesagt sowieso nicht besonders elegant.

    Viel Erfolg,
    Robert

    1. moin...

      Also ich kenne vielleicht for-, while-, do-while-, do-until- und wenn's denn sein muss auch goto-Schleifen, aber eine if-Schleife ist mir noch nie untergekommen.

      immer diese krümelstecherei... im programmiertechnischen sinne sind if-anweisungen auch keine schleifen, nur umgengssprache ist dies halt dazu gekommen das sie als schleifen bezeichnet werden.

      nich alles so broternst nehmen... oder? (wobei das wohl eher als hinweis als als ernsthafte fehlerbemenglung gemeint war oder?)

      tschau

      1. Moin,

        immer diese krümelstecherei... im programmiertechnischen sinne sind if-anweisungen auch keine schleifen, nur umgengssprache ist dies halt dazu gekommen das sie als schleifen bezeichnet werden.

        Nein.

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
        1. Hallo,

          danke an euch alle, die mir versucht haben zu helfen, ich werde dan mal versuchen die Sache mit einer for-Schleife(!) oder mit setIntervall zu machen.

          Grüße

          Palme

    2. Versuch's mal mit "setInterval", vielleicht geht das schneller.

      Ich habe setInterval bei einem ähnlichen Problem auch verwendet. Ist noch die beste Lösung.

      Allerdings:

      • es läuft in allen Browsern in unterschiedlicher Geschwindigkeit ab (Die Millisekunden-Angabe war wohl nicht genau genug)
      • Mir ist sogar nach dem Update von NN7.0 -> NN7.1 ein Unterschied aufgefallen, es funzt nämlich plötzlich genauso schlecht wie im IE, wo es vorher schön geklappt hat :(
  2. Hallöchen!!

    Sorry,ich kann nicht direkt auf deine Frage antworten,ich habe selber eine frage nur ich weiß nicht wo ich hier schreiben kann,naja muss ich es halt mal von hier aus machen.kann mir vielleicht irgendeiner helfen ich suche einen anbieter wo ich meine MP3 vom Rechner hochlaen kann,am besten wäre es noch wenn der zugang passwortgeschützt ist,ich habe die ganze zeit gesucht und nix gefunden,ich hoffe dies hier ließt jemand und kann mir eine antwort geben,wenn keiner ne antwort weiß,dann vielleicht wo es richtige mp3 gibt wo ich von denen dann den Quellcode übernehmen kann und bei ebay oder einer homepage einsetzen kann,also ich warte erstmal ab und freue mich auf alle antworten die mir weiter helfen können,ich bedanke mich schon mal im vorraus.

    Gruß Matze

    1. Hallöchen!!

      Gleichfalls.

      Kann es sein, dass dir die Verwendung von Punkt-Satzzeichen genau so fremd ist, wie der Sinn eines Forums??
      Warum schreibst du HIER eine Frage rein, die 180° in die andere Richtung des Topics geht?

      Vorschlag zur Güte:

      1. FAQ lesen
      2. Punkt-Taste finden
      3. Neuen Thread mit deinem Thema öffnen
      4. Auf Antwort warten

      So long

    2. Servus,

      es mag dir ja eventuell entgangen sein aber der Nick Matze wird hier schon von mir verwendet.

      Gruss Matze

  3. Hallo Palme,

    Kann man soetwas auch anders realisieren?

    Wie waere es mit einer SCHLEIFE ? (SCNR)

    for(i=0;i<=128;i++)
       {window.setTimeout("document.getElementById('rubrik').style.color='rgb(128,' + i + ',' + i + ')'",1000);}

    gruesse
    rainer groth

    --
    ss:| zu:} ls:& fo:) de:] va:| ch:] n4:° rl:? br:$ js:| ie:| fl:( mo:?
    (--> einer der letzten bauhaeusler <--)
    1. for(i=0;i<=128;i++)
         {window.setTimeout("document.getElementById('rubrik').style.color='rgb(128,' + i + ',' + i + ')'",1000);}

      Damit setzt du jeweils 128 Timer.

      Struppi.

      1. hallo Struppi,

        Stimmt ! ;-)

        Fuer den gewuenschten Effekt waere z.B. folgendes wohl sinnvoller:

        var r=0;var g=0;var b=0; //Startwerte

        function verlauf()
         {if(r<256)   //Zielwert rot
           {document.getElementById("rubrik").style.color="rgb(" + r + "," + g + "," + b + ")";
                  r++;
            setTimeout("verlauf()",5);}
          else
           {if(g<256)   //Zielwert gruen
             {document.getElementById("rubrik").style.color="rgb(" + r + "," + g + "," + b + ")";
              g++;
              setTimeout("verlauf()",5);}
            else
             {if(b<256)   //Zielwert blau
               {document.getElementById("rubrik").style.color="rgb(" + r + "," + g + "," + b + ")";
          b++
          setTimeout("verlauf()",5);}}}}

        verlauf();

        gruesse
        rainer groth

        --
        ss:| zu:} ls:& fo:) de:] va:| ch:] n4:° rl:? br:$ js:| ie:| fl:( mo:?
        (--> einer der letzten bauhaeusler <--)
  4. Servus,

    also das mit der Schleife wurde ja oft genug Besprochen,
    dass der Ablauf je nach Browser unterschiedlich schnell bzw. langsam geht hat folgenden Grund:
    Windows git Standardmässig dem Ie volle Systemresourcen.

    Ich weiss nicht ob es noch geht aber damals (früher mal).... konntest Du mit einer Endlosschleife den IE incl den kompletten Rechner lahm legen.
    So lahm legen, dass Du Ihn nur noch mit einem Kaltstart reaktivieren konntest.

    Der Netscape z.B: geht da etwas beharlicher zu und lässt sich etwas mehr Zeit beim Script abarbeiten. Da merkt man zwar, dass der Rechner etwas langsamer wird jedoch nicht völlig steht.

    Genau an der Resourcen zuteilung liegt die unterschiedlich schnelle abarbeitung der Schleife. Ich weiss nicht wie einfach es ist aber Du könntest Dich ja an der lokalen Systemzeit orientieren bzw.im Internet gibt es ebenfalls die möglichkeit die Zeit abzufragen.

    Daran könntest Du dich richten und das Script immer gleich schnell ablaufen lassen bzw. die Änderung in gleicher Geschwindigkeit erreichen.

    Gruss Matze

    PS. Frag mich nicht genau wie das gehen soll. Das habe ich bisher auch noch nie gemacht.