kye-raz1: document.write im IE mit Fehlermeldung

Hallo Leute, ich habe ein script geschrieben das vorwiegend mit document.write arbeitet....
Der Netscape führt mein script ohne mucken aus ( was eigentlich für einen sauberen code sprechen sollte
wenn der Netscape keine Probleme macht..... )
Der Explorer jedoch bringt mir an unregelmäßigen Zeitpunkten aber jedesmal bei einer document.write
Routine die Fehlermeldung:

die Anweisung "xyz" verweist auf Speicher "xyz".
Der Vorgang "read" konnte nicht ausgeführt werden.
Danach verabschiedet sich der Explorer und schließt sich mit dem Abschiedsgruß:
Es ist ein interner Fehler aufgetreten....

Ich habe meinen Code schon mehrmals umgeschrieben und Korrektur gelesen
aber der  Fehler tritt immer wieder auf auch unter Explorern anderer Rechner.
Kann mir jemand vielleicht sagen in welcher Richtung ich den Fehler ungefähr suchen soll?
Oder irgendetwas über die Eigenschaften der Fehlermeldung so daß ich einen bestimmten
Bereich meines scripts zur Fehlermeldung einkreisen kann bzw, welche Art von Fehlern
solche Meldungen hervorruft.Vielleicht verletzt ich irgendwo die Security-Policy des IE ???

  1. Hi !

    Wenn Du uns ein Stückchen Quellcode zukommen lässt, kann Dir sicher geholfen werden :-)

    Cya,

    Harry

    1. ok hier der source,der Fehler ist wahrscheinlich in der function schreibneu oder bad zu finden........

      var todo = "<head><style type=text/css>font.todo {font-size:9pt; color:#FFFFFF;font-weight:bold; font-family:tahoma,arial}                              </style></head><table align=center width=440 cellspacing=0 cellpadding=0 border=0><tr><td bgcolor=#477F0B nowrap><font class=todo><center>      <br>Ergänzen Sie die Lücken im Text!<br>      </center></font></td></tr><tr><td> </td>"

      //Anzahl der SelBoxen
      var Anzahl = 7
      var basis = "<html>"
      var green = "<font color=#118811>"

      //Definition für form
      var fend = "</table></html>"

      //Definition für Texteile!
      var Anfang = "<body bgcolor=#FFE7AA></body>" + todo
      var falsch = "Ihre Eingabe ist nicht richtig! Lösung anzeigen?"

      //Textressourcen
      text = new Array();

      text[1] = "  sucht Arbeit? [Heinz Koslowski]"

      text[2] = "  sucht Heinz Koslowski? [Arbeit]"

      text[3] = "  geht jeden Monat aufs Arbeitsamt? [Heinz Koslowski]"

      text[4] = "  geht Heinz Koslowski jeden Monat? [aufs Arbeitsamt]"

      text[5] = "  ist er? [zu alt]"

      text[6] = "  erzählt er, dass er zu alt ist? [seiner Frau]"

      text[7] = "  findet in der Zeitung eine interessante Anzeige? [Vera]";

      text[8] = "  findet Vera in der Zeitung? [eine interessante Anzeige]"

      text[9] = "  ruft ihr Mann an? [in Köln]"

      text[10] = "  zeigt Herr Becker die neue Wohnung? [Koslowskis]"

      text[11] = "  zeigt Herr Becker Koslowskis? [die neue Wohnung]"

      text[12] = "  möchte Marion nicht wechseln? [die Schule]"

      text[13] = "  kann Marion wohnen ?[in der Wohnung von Familie Mertens]"

      text[14] = "  ist sie schon ? [ein großes Mädchen]"

      //Lösungswörter
      richtig = new Array();

      richtig[1] = "Wer"
      richtig[2] = "Was"
      richtig[3] = "Wer"
      richtig[4] = "Wohin"
      richtig[5] = "Was"
      richtig[6] = "Wem"
      richtig[7] = "Wer"
      richtig[8] = "Was"
      richtig[9] = "Wen"
      richtig[10] = "Wem"
      richtig[11] = "Was"
      richtig[12] = "Was"
      richtig[13] = "Wo"
      richtig[14] = "Was"

      function yaright(so){

      parent.main.document.write("<tr><td>" + typer[so] + "<font face='tahoma,arial' size=-1>" + text[so] + "</font></form></td></tr>")
      parent.main.document.close
      }
      //Auflösung bei richtig

      function schreibneu(l){

      parent.main.document.open()
      parent.main.document.clear()
      parent.main.document.write(basis + Anfang)
      parent.main.document.close

      for (so = 1; so <= Anzahl; so++){

      if (right[so] != 1)
        {yaright(so)
        }

      else {
         parent.main.document.write( "<tr><td><font face=tahoma,arial color=#118811 size=-1><b>" + richtig[so] + "</b></font><font face=tahoma,arial size=-1>" + text[so] + "</font></td></tr>")
      parent.main.document.close
         }
        }

      parent.main.document.write(fend)

      if (l){
      var d=0;
      for (c=1;c <= Anzahl;c++){
      if (right[c] == 1)
      {d++}
      }
      }

      //wenn die letzte Box richtig ausgefüllt wird

      if (d == Anzahl)
      {
      alert(" Herzlichen Glückwunsch !\ Sie haben die Aufgabe erfolgreich gelöst! ");
      }
      }

      //Definition der type-felder
      typer = new Array()

      for (k=1;k<=Anzahl;k++)
      {
      typer[k] = "<form name=f"+k+" onSubmit='return parent.coder.bad(t"+k+","+k+")'><input type='text' name='t"+k+"' size=4></input>"
      }

      //erstellen der aufgabe
      function comp()
      {
      for (i=1;i< Anzahl;i++){
      //generieren der selectors
      parent.main.document.write("<tr><td><font face=tahoma,arial size=-1>" + typer[i] + text[i] +"</font></form></td></tr>")
      }
      }

      //generieren der html/basis
      if (!parent.main.neu)
      {
      parent.main.document.write(Anfang);

      //right[] = 0 steht für unaufgelöste Felder

      right = new Array;
      right[1] = 0;
      right[2] = 0;
      right[3] = 0;
      right[4] = 0;
      right[5] = 0;
      right[6] = 0;
      right[7] = 0;

      //erstellen des main-parts
      comp();

      //End-tags
      parent.main.document.write(fend)
      parent.main.neu = 1;
      }
      //überprüfungs-routine
      function bad (namo,nummer)
      {
      parent.main.neu = 1;
      if (namo.value == richtig[nummer])
      {
      right[nummer] = 1;
      schreibneu(nummer)
      }
      else{
      if (confirm(falsch))
      {
      right[nummer] = 1;
      schreibneu(nummer)
      }
      else namo.value="";

      }
      return false;
      }

      1. Hi !

        Zum ersten mal fehlt in sehr vielen Zeilen der abschliessende Strichpunkt: ;

        var todo = "<head><style type=text/css>font.todo {font-size:9pt; color:#FFFFFF;font-weight:bold; font-family:tahoma,arial}                              </style></head><table align=center width=440 cellspacing=0 cellpadding=0 border=0><tr><td bgcolor=#477F0B nowrap><font class=todo><center>      
        Ergänzen Sie die Lücken im Text!
              </center></font></td></tr><tr><td> </td>"

        Hier sind schon mal die ersten Fehler: vor einen Slash (/) muß da immer ein Escape-Zeichen hin, also /
        Außerdem solltest Du vor <table> ein <body> setzen.

        //Anzahl der SelBoxen
        var Anzahl = 7
        var basis = "<html>"
        var green = "<font color=#118811>"

        //Definition für form
        var fend = "</table></html>"

        //Definition für Texteile!

        passt alles, aber

        var Anfang = "<body bgcolor=#FFE7AA></body>" + todo

        ist ein Schmarn: Du machst den body auf und dann gleich wieder zu und klebst dann den Head dahinter

        var falsch = "Ihre Eingabe ist nicht richtig! Lösung anzeigen?"

        //Textressourcen
        text = new Array();

        text[1] = "  sucht Arbeit? [Heinz Koslowski]"

        text[2] = "  sucht Heinz Koslowski? [Arbeit]"

        text[3] = "  geht jeden Monat aufs Arbeitsamt? [Heinz Koslowski]"

        text[4] = "  geht Heinz Koslowski jeden Monat? [aufs Arbeitsamt]"

        text[5] = "  ist er? [zu alt]"

        text[6] = "  erzählt er, dass er zu alt ist? [seiner Frau]"

        text[7] = "  findet in der Zeitung eine interessante Anzeige? [Vera]";

        text[8] = "  findet Vera in der Zeitung? [eine interessante Anzeige]"

        text[9] = "  ruft ihr Mann an? [in Köln]"

        text[10] = "  zeigt Herr Becker die neue Wohnung? [Koslowskis]"

        text[11] = "  zeigt Herr Becker Koslowskis? [die neue Wohnung]"

        text[12] = "  möchte Marion nicht wechseln? [die Schule]"

        text[13] = "  kann Marion wohnen ?[in der Wohnung von Familie Mertens]"

        text[14] = "  ist sie schon ? [ein großes Mädchen]"

        //Lösungswörter
        richtig = new Array();

        richtig[1] = "Wer"
        richtig[2] = "Was"
        richtig[3] = "Wer"
        richtig[4] = "Wohin"
        richtig[5] = "Was"
        richtig[6] = "Wem"
        richtig[7] = "Wer"
        richtig[8] = "Was"
        richtig[9] = "Wen"
        richtig[10] = "Wem"
        richtig[11] = "Was"
        richtig[12] = "Was"
        richtig[13] = "Wo"
        richtig[14] = "Was"

        Ist soweit auch ok.

        function yaright(so){

        parent.main.document.write("<tr><td>" + typer[so] + "<font face='tahoma,arial' size=-1>" + text[so] + "</font></form></td></tr>")

        gleicher Fehler wie oben: /

        parent.main.document.close
        }
        //Auflösung bei richtig

        function schreibneu(l){

        parent.main.document.open()
        parent.main.document.clear()

        passt (glaub ich)

        parent.main.document.write(basis + Anfang)

        ^^^^^^^^^^^^^^
        Gibt mit obgiem Fehler aus "Anfang" vollkommen schwachsinnigen HMLT-Code

        parent.main.document.close

        for (so = 1; so <= Anzahl; so++){

        ...

        undsoweiterundsofort ...
        Du merkst, daß die Fehler immer die gleichen sind.
        So wie Dein Skript im Moment aussieht, kannst Du froh sein, daß der Browser nicht das gesamte OS mit in den Abgrund gerissen hat ;-)
        Dann sind da noch ein paar Variablen, die in der einen Funktion erzeugt werden aber nicht public sind, die Du aber versuchst, in einer anderen Funktion auszulesen usw.

        Am besten Du arbeitest erst nochmal an dem Skript. Wenn's dann immer noch nicht geht, sag bescheid.

        Cya,

        Harry