Re
Ein 80286'er ist ein Intel Prozessor (ein Vorläufer des Pentiums)
Das war ironisch gemeint. Mein CPU hat nicht allzu hohe Leistungen. Dass deiner das in bruchteilen schafft, ist mir klar. Meiner aber nicht. Wenn du das ganze Script mal im IE startest, wirst du es sehen ...
Hier mal aufgeräumter Code:
<body>
<script type="text/javascript">
~~~~~~javascript
<!--
// Allchemiescript via JavaScript
var AnzahlChemikalien = 799,alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";alpha = alpha.split("");
var menge = 50,Chemikalien = new Array();
// Abfragen, ob als Anzahl 0 oder niedriger eingegeben wurde. Wenn nein, gegebene Anzahl an Kombinationen erstellen.
if(AnzahlChemikalien > 0)
{
// Schleife zur zufallserstellung einer Kombination (später noch korrigiert)
for(var i = 0;i<AnzahlChemikalien;i++)
{
Chemikalien[i] = alpha[Math.round(Math.random()*(alpha.length-1))]+alpha[Math.round(Math.random()*(alpha.length-1))]+alpha[Math.round(Math.random()*(alpha.length-1))]
}
}
else
{
// Schleife zur erstellung sämtlicher Möglichkeiten.
for(var i = 0;i<alpha.length;i++)
{
for(var j = 0;j<alpha.length;j++)
{
for(var k = 0;k<alpha.length;k++)
{
Chemikalien[Chemikalien.length]=alpha[i]+alpha[j]+alpha[k]
}
}
}
}
// Interne Variablen
var SaveReg = null,Seconda = 0,Substanzenarray = new Array(),rekursivdurchschnitt = 0
// Ausgabeobjekt schreiben
document.write("<span id='Reagenz'></span>")
// 2 Reagenzgläser mischen-Funktion
function Start_Mix(REGGLASS)
{
if(SaveReg == null)
{
// Capturen der übergebenen Reagenzgläser in externe (außerhalb von der Funktion stehende) Variablen.
SaveReg = REGGLASS;
Seconda = REGGLASS;
// Durchschnitt berechnen ... (nach änderung sowieso überflüssig)
rekursivdurchschnitt = REGGLASS.Aktuell/REGGLASS.Substanzen.length
// Substanzen auszählen
for(var i in Seconda.Substanzen)
{
var rrt = 0;
// Chemikalienindex herausfinden.
for(var j = 0;j<Chemikalien.length;j++)
{
if(Chemikalien[j]==Seconda.Substanzen[i])
{
// Bei fund variable übergeben und schleife abbrechen.
rrt=j;
break;
}
}
// Substanznummer speichern
Substanzenarray[Substanzenarray.length]=j
}
// Leeren des Reagenzglases.
REGGLASS.Aktuell = 0;
REGGLASS.Substanzen = new Array()
}
else
{
// Wenn ein Reagenzglas gewählt wurde ...
// Übergebenen Wert speichern ...
SaveReg = REGGLASS;
// Substanzen herauslesen und in Chemikalienindex umwandeln
for(var i in Seconda.Substanzen)
{
var rrt = 0;
for(var j = 0;j<Chemikalien.length;j++)
{
if(Chemikalien[j]==Seconda.Substanzen[i])
{
rrt=j;
break;
}
}
// Der Liste hinzufügen.
Substanzenarray[Substanzenarray.length]=j
};
// Erneut ...
for(var i in SaveReg.Substanzen)
{
var rrt = 0;
for(var j = 0;j<Chemikalien.length;j++)
{
if(Chemikalien[j]==SaveReg.Substanzen[i])
{
rrt=j;
break;
}
}
Substanzenarray[Substanzenarray.length]=j
}
// Reagenzglas leeren.
REGGLASS.Substanzen = new Array();
REGGLASS.Aktuell = 0;
// Substanzen in Array schreiben und danach in das neue Reagenzglas geben
for(var i in Substanzenarray)
{
// Fragen, ob das Reagenzglas benutzbar ist
if(REGGLASS.Kanngenutztwerden == true)
{
// Substanz in das Reagenzglas geben.
REGGLASS.AddSubstanz(Substanzenarray[i],rekursivdurchschnitt)
}
else
{
// Abbrechen, falls das Glas nicht verwendbar ist.
break;
}
}
// Vorheriges Reagenzglas leeren
Seconda.Aktuell = 0;
Seconda.Substanzen = new Array();
// Variablen leeren
SaveReg = null;
Seconda = null;
Substanzenarray = new Array()
}
// Reagenzglas zurückgeben.
return REGGLASS
}
// Erstellen eines neuen Reagenzglases (PART 2)
function REAGGLASS(MaximaleFuellhoeheInTics)
{
// Substanzliste (ARRAY) erstellen.
this.Substanzen = new Array();
// Maximale Füllhöhe festlegen
this.Maximum = MaximaleFuellhoeheInTics;
// Aktuelle Füllhöhe festlegen
this.Aktuell = 0;
// Benutzbarkeit setzen.
this.Kanngenutztwerden=true;
// Funktion zur Substanzhinzufügung erstellen
this.AddSubstanz = function(Substanz,Menge)
{
// Abfragen, ob das Reagenzglas noch benutzbar ist
if(this.Kanngenutztwerden == true)
{
// Abfragen, ob die neue Menge über der Maximalmenge liegt
if(this.Aktuell - Number("-"+Menge) > this.Maximum)
{
// Fehlermeldung
alert("Das Reagenzglas ist explodiert!");
// Leeren des Reagenzglases
this.Aktuell=0;
this.Substanzen = new Array();
this.Maximum = 0;
// Unbenutzbar machen
this.Kanngenutztwerden = false
}
else
{
// Prüfen, ob Menge über 0 liegt
if(Menge >= 1)
{
// Menge zufügen zu aktueller Füllhöhe
this.Aktuell += Number(Menge);
// Substanz dem Reagenzglas zufügen
this.Substanzen[this.Substanzen.length] = Chemikalien[Substanz];
}
}
// Reagenzgläser neu anzeigen
alleAnzeigen()
}
else
{
// Fehlermeldung für zerstörtes Reagenzglas
alert("Das Reagenzglas ist zerstört und kann nicht verwendet werden!")
}
}
}
// Neue Reagenzgläser erstellen (PART 1)
function AddReagenzglas(AnzahlGlaeser,MaximaleFuellhoeheInTics)
{
// Schleife für mehrere Reagenzgläser
for(var i = 1;i<=AnzahlGlaeser;i++)
{
// Eval-Funktion für ansprechen auf dieses Reagenzglas
eval("this.Reagenzglas_"+i+" = new REAGGLASS("+MaximaleFuellhoeheInTics+")")
}
}
// Alle Reagenzgläser zeigen
function alleAnzeigen()
{
// Ausgabeobjekt leeren.
document.getElementById("Reagenz").innerHTML = "";
//Schleife für die Ausgabe
for(var i in Reagenzglaeser)
{
// farbe für "ganze" und "zerstörte" Reagenzgläser
var farbe = (Reagenzglaeser[i].Kanngenutztwerden == true)?"#009F00":"#BF0000";
// Prüfung, ob ein Mischvorgang eingeleitet wurde
if(SaveReg == null)
{
// Anzeigen der Standardoptionen (sind derzeit nur in einer Zeile)
document.getElementById("Reagenz").innerHTML += "<div style=\"color:"+farbe+";\">"+i.replace("_"," ")+" ("+Reagenzglaeser[i].Aktuell+" / "+Reagenzglaeser[i].Maximum+" || "+((Reagenzglaeser[i].Substanzen.join(", ")=="")?((Reagenzglaeser[i].Kanngenutztwerden==true)?"Leer":"Kaputt"):Reagenzglaeser[i].Substanzen)+") <a href=\"javascript:Reagenzglaeser."+i+".AddSubstanz(document.getElementById('DSUB').value,menge)\">[Substanz zufügen]</a>|<a href=\"javascript:void(0)\" onClick=\"Reagenzglaeser."+i+" = Start_Mix(Reagenzglaeser."+i+");alleAnzeigen()\">[Mischen ...]</a></div>"
}
else
{
// Anzeigen der Zweitoption für das Mischen 2er Reagenzgläser (sind derzeit nur in einer Zeile)
document.getElementById("Reagenz").innerHTML += "<div style=\"color:"+farbe+";\">"+i.replace("_"," ")+" ("+Reagenzglaeser[i].Aktuell+" / "+Reagenzglaeser[i].Maximum+" || "+((Reagenzglaeser[i].Substanzen.join(", ")=="")?((Reagenzglaeser[i].Kanngenutztwerden==true)?"Leer":"Kaputt"):Reagenzglaeser[i].Substanzen)+") <a href=\"javascript:void(0)\" onClick=\"Reagenzglaeser."+i+" = Start_Mix(Reagenzglaeser."+i+");alleAnzeigen()\">[... mit diesem.]</a></div>"
}
}
}
// Andere Variablen.
var Mischung = new Array();
// Initiieren der Reagenzgläser in die Variable Reagenzglaeser
var Reagenzglaeser = new AddReagenzglas(10,500);
// Startobjekt für eine Drop-Down-Liste ID = "DSUB"
document.write("<select style=\"width:200px;\" size=1 id=\"DSUB\">")
// Sortieren der Chemikalien, die zur Verfügung stehen.
Chemikalien.sort()
// Variable für das Zählen der Doppelten Chemikalien
var Doppelte = 0
// Schleife zum entfernen von Doppelten
for(var i in Chemikalien)
{
// Suchwert setzen
var SuchWert = Chemikalien[i]
// Chemikalien erneut durchgehen und alle Doppelten entfernen.
for(var j in Chemikalien)
{
// Fragen, ob das aktuelle Objekt nicht das suchobjekt ist.
if(j == i)
{
// Überprüfen, ob die 2 Chemikalien identisch sind
if(Chemikalien[i] == Chemikalien[j])
{
// Entfernen des doppelten Eintrags
Chemikalien.splice(j,j)
// Zähle erhöhen.
Doppelte++
}
}
}
}
// Schleife für die Listen-Elemente
for(var i in Chemikalien)
{
// Schreiben einer Option für die DDL (Drop-Down-Liste) ...
document.write("<option value="+i+">"+Chemikalien[i]+"</option>")
}
// Abschließen der DDL
document.write("</select>")
// Startevent festlegen
document.body.onload = alleAnzeigen
-->
~~~~~~html
</script>
</body>
Wenn du Fehler findest, scheue dich nicht, mich damit zu konfrontieren.
MFG
Griever