Parameter Übergabe-Problem
math
- javascript
<html>
<head>
<title>Diffusion-Virus</title>
<script type="text/javascript">
function start(){
var computer=computer;
var functions= new Array();
var pco=0; //pco= pc on
var inf=0; //inf= infected
var i=0; //i=counter
var infco=new Array(); //infco=control if it has been already infected
var hm=1*window.prompt("Bitte geben Sie die Anzahl der Computer ein!","");
while(i<=hm){
functions[i]=function(pco, inf, cnt){
pcou=pco;
infu=inf;
cntu=cnt;
document.write("pcou=",pcou,"infu=",infu,"cntu=",cntu);
if(pcou==0){
document.write("Computer ",cntu," ist hochgefahren.<br>");
}
if(infu==1){
document.write("Computer ",cntu," is infected!<br>")
var bereich=hm;
var zahl = Math.round(Math.random()/(1/bereich));
functions[zahl](1,1);
infco[i]=1;
}
}
i=i+1;
}
var bereich=hm;
var zahl = Math.round(Math.random()/(1/bereich));
document.write("Ein Virus wird in Computer ",zahl," erzeugt<br><br>")
if(!(functions[zahl](1, 1, zahl))){alert("Virus erzeugt");}
a=0; //d=counter
while(d<=i){
functions[a](0, 0, a);
a=a+1;
}
}
</script>
</head>
<body>
<form>
<input type="submit" onClick="start()">
</form>
</body>
</html>
Dieses Script soll nachstellen, wie sich ein Virus ausbreitet.
Ich habe bloss folgendes Problem, die Parameter pcou, infu und cntu sind nicht die, die sie sein sollen, nämlich in allen Fällen aus bei der Vorus-Erzeugung, 1,1 und undefinded.
Ich verstehe nicht warum.
Bitte um Hilfe!
Liebe Grüße,
math
document.write("pcou=",pcou,"infu=",infu,"cntu=",cntu);
in diesem Moment wird das vorhandene Dokument (incl. JavaScript) gelöscht und ein neues mit diesem Inhalt erzeugt. document.write kannst du nur während des Ladevorgangs benutzen.
»» document.write("pcou=",pcou,"infu=",infu,"cntu=",cntu);
in diesem Moment wird das vorhandene Dokument (incl. JavaScript) gelöscht und ein neues mit diesem Inhalt erzeugt. document.write kannst du nur während des Ladevorgangs benutzen.
Das bedeutet, hier wurden die Variblen verändert, richtig?
Hi,
»» document.write("pcou=",pcou,"infu=",infu,"cntu=",cntu);
in diesem Moment wird das vorhandene Dokument (incl. JavaScript) gelöscht und ein neues mit diesem Inhalt erzeugt. document.write kannst du nur während des Ladevorgangs benutzen.
Das bedeutet, hier wurden die Variblen verändert, richtig?
Nein, das bedeutet das, was da steht.
Dokument futsch, Variablen damit ebenfalls futsch.
MfG ChrisB
Gut habe den Teil gelöscht, aber cntu bleibt noch immer undefined...
Gut habe den Teil gelöscht, aber cntu bleibt noch immer undefined...
functionszahl;
rate mal welches Argument hier _nicht_ übergeben wird
rate mal welches Argument hier _nicht_ übergeben wird
danke, manchmal übersieht man wirklich das Einfachste^^
aber noch ein kleines Problem.
sobald ich die Zeile so verändere:
if(infu==1&&infco[cntu]==0
meint er das d undefindes ist und ich weiß wirklich nicht warum, da das ja wirklich nichts mit der Variable d zutun hat, oder doch?
P.S.: das ist dazu gedacht, dass kein "Computer" zweimal "infected" wird.
sobald ich die Zeile so verändere:
if(infu==1&&infco[cntu]==0
meint er das d undefindes ist und ich weiß wirklich nicht warum, da das ja wirklich nichts mit der Variable d zutun hat, oder doch?
eigentlich verstehe ich hier nur Bahnhof (allein schon wegen des abgerissenen Codebrockens). Aber ein Tipp: du definierst nirgends eine Variable d!
<html>
<head>
<title>Diffusion-Virus</title>
<script type="text/javascript">
function start(){
var computer=computer;
var functions= new Array();
var pco=0; //pco= pc on
var inf=0; //inf= infected
var i=0; //i=counter
var infco=new Array(); //infco=control if it has been already infected
var hm=1*window.prompt("Bitte geben Sie die Anzahl der Computer ein!","");
while(i<=hm){
functions[i]=function(pco, inf, cnt){
pcou=pco; //pcou=pco übergeben
infu=inf; //infu=inf übergeben
cntu=cnt; //cntu=cnt übergeben
if(pcou==0){
if(i=5){
document.write("<img src='computer.gif'>Computer ",cntu," ist hochgefahren.<br>");
}else{
document.write("<img src='computer.gif'>Computer ",cntu," ist hochgefahren.");
}
}
if(infu==1&&infco[cntu]==0){
document.write("Computer ",cntu," is infected!<br>")
var bereich=hm;
var zahl = Math.round(Math.random()/(1/bereich));
functions[zahl](1,1,cntu);
infco[i]=1;
}
}
i=i+1;
}
var c=0; //d=counter
while(c<=hm){
functions[c](0, 0, c);
c=c+1;
}
var bereich=hm;
var zahl = Math.round(Math.random()/(1/bereich));
document.write("Ein Virus wird in Computer ",zahl," erzeugt<br><br>")
if(!(functions[zahl](1, 1, zahl))){alert("Virus erzeugt");}
var b=0;
while(b<=hm){
functions[b](1, 0, b);
b=b+1;
}
}
</script>
</head>
<body>
<form>
<input type="submit" onClick="start()">
</form>
</body>
</html>
So habe jetzt alle Fehler behoben, aber warum funktioniert die zweite while-Schleife nicht, die genau dasselbe macht wie die erste?
Lg.
math
Hi,
So habe jetzt alle Fehler behoben, aber warum funktioniert die zweite while-Schleife nicht, die genau dasselbe macht wie die erste?
Weil sie nicht mehr da ist, deshalb.
Begreife das doch jetzt bitte endlich.
MfG ChrisB
Weil sie nicht mehr da ist, deshalb.
Gut, wie soll ich es dann ausgeben?
Ich habe jetzt einfach mal alle document.write mit "alert" ersetzt, die zweite while-Schleife will noch immer nicht...
Hi,
Ich habe jetzt einfach mal alle document.write mit "alert" ersetzt, die zweite while-Schleife will noch immer nicht...
Wenn ich alle documtne.write durch alert's ersetze (und die Syntax dessen, was ausgegeben wird anspasse, also die Auflistung mehrere Parameter nacheinander durch Komma getrennt durch jeweils einen mit + verknüpften String ersetze) - dann wird die zweite while-Schleife sehr wohl durchlaufen; das zeigen sowohl die Kontrollausgaben als auch der Debugger im FireBug.
MfG ChrisB
Hi,
Gut, wie soll ich es dann ausgeben?
Anders.
Stichwort innerHTML für Anfänger, DOM für Fortgeschrittene.
MfG ChrisB
Stichwort innerHTML
.oO(Wieso braucht es eigentlich zwei Tage und sechs Nachfragen, bis man dem Fragesteller einen Lösungsvorschlag macht, auf den er ganz offenbar nicht von selbst gekommen ist? Ein einfaches »Verwende stattdessen innerHTML.« als Zusatz zu »document.write kannst du nur während des Ladevorgangs benutzen.« hätte es auch gleich getan.)
Mathias
das Script bleibt eher hier hängen
functionszahl;
Die Funktion ruft sich immer wieder selbst mit den Startwerten auf