if-Schleifen = lahm?
Palme
- javascript
0 Robert Bamler0 Matze0 rainer groth0 Struppi
0 Matze
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
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
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
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.
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
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:
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
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:
So long
Servus,
es mag dir ja eventuell entgangen sein aber der Nick Matze wird hier schon von mir verwendet.
Gruss Matze
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
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.
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
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.