Hallo vmx,
wie gestern versprochen, habe ich mir dein Script angeschaut und es umgebaut. Allerdings nicht optimiert.
Jetzt funktioniert es in beiden Browsern.<html>
<head>
<title>Farbbalken</title>
<style type="text/css">
<!--
#bal {position:absolute;top:10;left:10;width:240;height:10;border:thin;}
#farbe {position:absolute;top:30;left:10;width:200;height:20;border:solid;}
#zahl {position:absolute;top:70;left:10;width:200;height:20;border:solid;}//-->
</style>
<script language="JavaScript">
<!--
var i=0;
var a = 0;
function Balken()
{i=i+1;/*while (a<1)*/
{
a = Math.random();
a=a*255;
a = Math.ceil(a);
d=a;}
/* a=d; */
var b = avar red = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); /* fuer den farbuebergang ins gelbe wird die zufallszahl von dezimal in hexa dezimal umgerechnet */
var redhex1 =b/16;
redhex1 = Math.floor(redhex1);
var redhex2 = b % 16;var c = 255 - a
var neggreen = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); /* fuer den farbuebergang ins rote wird die zufallszahl von dezimal in hexa dezimal umgerechnet */
var neggreenhex1 = c/16;
neggreenhex1 = Math.floor(neggreenhex1);
var neggreenhex2 = c % 16;if(i<30)a="#00cc00" ;else if(i<60)a="#"+red[redhex1]+red[redhex2]+"ff00"; else a="#ff" + neggreen[neggreenhex1] + neggreen[neggreenhex2] + "00";
if (document.all) /*IE-Syntax*/
{
document.all.bal.style.width=2*i;
document.all.bal.style.backgroundColor=a;
document.all.farbe.innerText=a;
document.all.zahl.innerText=d;
}
else { /*Navi-Syntax*/
document.bal.bgColor=a;
document.bal.resizeTo(2*i,10);
document.farbe.document.open();
document.farbe.document.write(a);
document.farbe.document.close();
document.zahl.document.open();
document.zahl.document.write(d);
document.zahl.document.close();
}if (i<101) setTimeout("Balken()",100);
}//-->
</script>
</head>
<body onLoad="Balken()">
<div id="bal"> </div>
<div id="farbe"> </div>
<div id="zahl"> </div>
</body>
</html>Das Vorgehensprinzip:
Du definierst drei Divbereiche, die später die gewünschten Werte aufnehmen.
In bal wird der Balken farbig dargestellt. Farbe und zahl nehmen die entsprechenden Werte auf.
Die Weite der Vergrößerung entspricht jeweils dem doppelten Wert von i. Im setTimeout kannst du die Geschwindigkeit des Wachstums einstellen.
Gegenwärtig ändert der Balken laufend seine Farbe. Möchtest du es nicht, dann entferne in den beiden auskommentierten Zeilen einfach die Kommentarzeichen.Viele Grüße
Antje
PS: Diese AUfgabe hat mir einfach Spaß gemacht.
Hi Antje!
Ich beziehe mich auf MEINEN Quelltext (der Erste)(einzige Aenderung: Gruen nicht #00cc00, sondern #00ff00).
Ich glaube du hast da etwas uebersehen (der Balken wechselt die Farbe unregelmaessig):
Ich will ja, dass der Balken waechst und die Farbe aendert (in eiem schoenen Uebergang von Gruen auf Gelb auf Rot.
Die Farbe soll (wenn die Zufallszahl 255 ist):
Anfangs gruen (#00ff00) sein (wenn die Zufallszahl a > 30 ist).
In der Mitte dann gelb (wenn die Zufallszahl a > 128 ist).
ABER: Fuer Gelb muss der Rotwert ja genauso hoch sein wie der Gruenwert.
Also muss bei a = 127 der Rotwert bei ff liegen.
Deswegen weise ich (vor dem array red) b den Wert a*2 zu.
Das geht bei deinem script aber nichtmehr (und ich weiß nicht warum).
Am Schluss dann rot (wenn die Zufallszahl a groesser ist)(anscheinend fast gleiches Problem wie bei Gelb)
OK,Ich hoffe du hast noch Lust es zu verbessern, oder wenn jemand will der nicht Antje heisst, der darf natürlich auch verbessern.
THANX,
CU,
vmx.