Antje Hofmann: Fehler: Objekt erforderlich

Beitrag lesen

Hallo Helmut

Erst mal Danke für Dein Interesse!
Nachdem ich das script angepasst habe, lässt sich die Datei nicht mehr laden. Als Alternative habe ich die Zeile document.getElementById("denk").style.top = y;
getauscht gegen document.all[denk].style.posTop = y;
Dafür habe ich die Fehlermeldung: 'document.all[...].style' ist Null oder kein Objekt.

»»<img src="images/denk.jpg" width="31" height="62" title="Fang mich!" id="denk">

css:
#denk
  {
   position:  absolute;
   top   0;
   left:   0;
   z-index:  3;
  }

ergänze bitte die Angaben zu top und left um die Einheit

<!--
//-->

Kommentare dieser Form haben in externen Dateien nichts verloren. Dieser Kommentar wird ausschließlich innerhalb der HTMl-Datei verwendet

Außerdem bei css ohne //

js:
<!--

siehe oben

//Bild jpg vertikale Position hoch/runter
var y  = 1;
var schritt = 1;
whatbrowser();
while(true)
{
  if(y < 0 | y >= screen.availHeight)

bist du sicher, dass du das bitweise Oder verwenden möchtest?
Nimm lieber das normale ||

{
   schritt =- schritt;
   if(ie)
   {
   //document.getElementById("denk").style.top = y;
   document.all[denk].style.posTop = y;

denk steht nicht in Anführungsstichen, somit wird es als Variable gedeutet

besser
document.all["denk"].style.top= y;

//document.getElementById("denk").style.posTop = y;
   }
   if(ns)

{
   document.getElementById("denk").top = y;
   }

function whatbrowser()
{
  ns = (document.layers)?true:false;
  ie = (document.all)?true:false;
}

du ordnest Netscape 4 (nur der kennt Layer) die Methode getElementById zu, die kennt er wiederum nicht, sondern erst ab Netscape 6. Der Browser kennt aber Layers nicht.

Der nächste kritische Punkt ist die unendliche Schleife ohne Abbruchbedingung.

Dein System ist sofort ausgelastet, daher der Effekt, dass sich die Seite nicht mehr laden läßt.

Zu sehen ist übrigens nichts, da die Abläufe in Bruchteilen von Sekunden erfolgen.

Hast du dir auch überlegt, was deine Schleife bewirkt?

Start: y=1, schritt=1, element.style.top=0

solange wie y<screen.availHeight ist passiert erstmal gar nichts, außer das y um eins erhöht wird

irgendwann ist y=screen.availHeight z.b. 572

dann passiert folgendes:

die Bedingung wird wahr und das Element an den unteren Bildschirmrand geschoben, gleichzeitig kehrst du die Richtung um

Jetzt passiert wiederum solange nichts, bis y=-1 ist. Du verschiebst das Element an den oberen Bildschirmrand und kehrst die Richtung wieder um.

Da Spielchen geht von vorn los. Dein Element wird immer zu den Punkten -1 und z.B. 572 verschoben. Da das so schnell geht, pfeift dir der Browser eines und kümmert sich nicht darum. Da deine Schleife eh unendlich ist, stürzt er lieber ab als irgendwas von dem zu tun was du möchtest.

Schaue dir mal die Methoden setTimeout bzw. setInterval an. Die helfen dir weiter.

Viele Grüße

Antje