math: Parameter Übergabe-Problem

<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

  1. 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.

    1. »»   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?

      1. 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

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Gut habe den Teil gelöscht, aber cntu bleibt noch immer undefined...

          1. Gut habe den Teil gelöscht, aber cntu bleibt noch immer undefined...

            functionszahl;

            rate mal welches Argument hier _nicht_ übergeben wird

            1. 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.

              1. 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!

                1. <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

                  1. 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

                    --
                    Light travels faster than sound - that's why most people appear bright until you hear them speak.
                    1. Weil sie nicht mehr da ist, deshalb.

                      Gut, wie soll ich es dann ausgeben?

                      1. Ich habe jetzt einfach mal alle document.write mit "alert" ersetzt, die zweite while-Schleife will noch immer nicht...

                        1. 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

                          --
                          Light travels faster than sound - that's why most people appear bright until you hear them speak.
                      2. Hi,

                        Gut, wie soll ich es dann ausgeben?

                        Anders.

                        Stichwort innerHTML für Anfänger, DOM für Fortgeschrittene.

                        MfG ChrisB

                        --
                        Light travels faster than sound - that's why most people appear bright until you hear them speak.
                        1. 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

      2. das Script bleibt eher hier hängen

        functionszahl;

        Die Funktion ruft sich immer wieder selbst mit den Startwerten auf