mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: So 05.07.2020 19:29 Benutzername: Passwort: Auto-Login

Thema: JS-Fehler im IE7 ... vom 13.10.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> JS-Fehler im IE7 ...
Autor Nachricht
bluespoon
Threadersteller

Dabei seit: 10.11.2006
Ort: Hannover
Alter: 37
Geschlecht: Männlich
Verfasst Sa 13.10.2007 02:32
Titel

JS-Fehler im IE7 ...

Antworten mit Zitat Zum Seitenanfang

Hallo,

könnt ihr hier mal bitte rüberschauen und mir sagen,
was da falsch läuft? Das Script soll 2 Container animiert
"einfliegen". Eigentlich läuft alles ... nur net im IE7.

Die Fehlerkonsole vom FF spuckt nichts aus. Aber der
IE7 führt lediglich InhaltOeffnen() aus und wenn danach
BannerOeffnen() gestartet werden soll, spuckt er folgendes
aus:

"Das Objekt unterstützt diese Eigenschaft oder Methode nicht"
Als Fehler-Zeile gibt er gleich die erste an.

Code:
function InhaltOeffnen() {
      
         x += 20;
         
         Inhalt = document.getElementById("Inhaltsbereich").style;
         Inhalt.left = x + "px";
         
           if(x < 0) {
            window.setTimeout('InhaltOeffnen()', 15);
         }
         else {
            BannerOeffnen();
         };
      };
      
      function BannerOeffnen() {
      
         y -= 15;
         
         Banner = document.getElementById("Banner").style;
         Banner.top = y + "px";
         
           if(y > 0) {
            window.setTimeout('BannerOeffnen()', 15);
         }
         else {
         };
      };


Also ich meine am Code ist nix falsch!

Damit Ihr das net mehr zusammenbasteln müsst, ist hier
noch einmal ein lauffähiges Dokument:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   
   <style type="text/css">
      #Inhaltsbereich {
         position:      absolute;
         top:         240px;
      }
      #Banner {
         position:      absolute;
         top:         200px;
      }
   </style>

   <script type="text/javascript">
   
      var x = -520;
      var y = 165;
      var xx = 0;
      var yy = 0;
      
      function InhaltOeffnen() {
      
         x += 20;
         
         Inhalt = document.getElementById("Inhaltsbereich").style;
         Inhalt.left = x + "px";
         
           if(x < 0) {
            window.setTimeout('InhaltOeffnen()', 50);
         }
         else {
            BannerOeffnen();
         };
      };
      
      function BannerOeffnen() {
      
         y -= 15;
         
         Banner = document.getElementById("Banner").style;
         Banner.top = y + "px";
         
           if(y > 0) {
            window.setTimeout('BannerOeffnen()', 50);
         }
         else {
         };
      };
      
      onload = InhaltOeffnen;
   </script>
</head>

<body>
   <div id="Inhaltsbereich">
      Inhalt
   </div>
   <div id="Banner">
      Banner
   </div>
</body>

</html>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 39
Geschlecht: Männlich
Verfasst Sa 13.10.2007 04:14
Titel

Antworten mit Zitat Zum Seitenanfang

du rufst die funktion "document.getElementById" auf...
was hat das .style dahinter verloren?
das hat nix mit der ID des elementes zu tun..
diese funktion selektiert ein element anhand seiner ID. nichts weiter.
alle weiteren operationen folgen danach.
die funktion hat zwar ein "eingebautes eval" - sprich du kannst werte auch direkt in der funktion setzen - aber das array unter "style" wirst du in der form nicht in einer variable speichern können.

Code:
      function BannerOeffnen() {
     
         y -= 15;
         
         Banner = document.getElementById("Banner");
         Banner.style.top = y + "px";
         
           if(y > 0) {
            window.setTimeout('BannerOeffnen()', 15);
         }
         else {
         };
      };


und warum überhaupt das leere else?
wenn du nichts machen willst, dann schreib auch nichts.
oder mach wenigstens ein void(0) rein..


Zuletzt bearbeitet von sahnemuh am Sa 13.10.2007 04:18, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
bluespoon
Threadersteller

Dabei seit: 10.11.2006
Ort: Hannover
Alter: 37
Geschlecht: Männlich
Verfasst Sa 13.10.2007 14:33
Titel

re

Antworten mit Zitat Zum Seitenanfang

Vielen Dank *Thumbs up!*

Nachtrag:
Ach so ... aber deshalb hab' ich ja immer noch den Fehler im
IE. Der erste Part wird ja auch ohne zu meckern ausgeführt.


Zuletzt bearbeitet von bluespoon am Sa 13.10.2007 14:40, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
bluespoon
Threadersteller

Dabei seit: 10.11.2006
Ort: Hannover
Alter: 37
Geschlecht: Männlich
Verfasst Mo 15.10.2007 13:28
Titel

re

Antworten mit Zitat Zum Seitenanfang

Hat keiner mal einen Ansatz für mich?

Ich weiß mit Sicherheit, dass es an
window.setTimeout liegt. Aber warum?

Muss ich vielleicht eine "Ebene" angeben,
um auf die zweite Funktion zugreifen zu
können im IE?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Raumwurm

Dabei seit: 21.12.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mo 15.10.2007 14:25
Titel

Antworten mit Zitat Zum Seitenanfang

So ginge es z.B.:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   
   <style type="text/css">
      #Inhaltsbereich {
         position:      absolute;
         top:         240px;
      }
      #Banner {
         position:      absolute;
         top:         200px;
      }
   </style>

   <script type="text/javascript">
   
      var x = -520;
      var y = 165;
      var xx = 0;
      var yy = 0;
     
      function InhaltOeffnen() {
         x += 20;
       var Inhalt =  document.getElementById("Inhaltsbereich");
         Inhalt.style.left = x + "px";
         
         if(x < 0) {
            var contentInhalt = window.setTimeout('InhaltOeffnen()', 50);
         }
         else {
          window.clearTimeout(contentInhalt);
            BannerOeffnen();
         }
      };
     
      function BannerOeffnen() {
         y -= 15;
       var Banner = document.getElementById("Banner")
         Banner.style.top = y + "px";
         if(y > 0) {
            var contentBanner = window.setTimeout('BannerOeffnen()', 50);
         }
         else {
          window.clearTimeout(contentBanner);
         }
      };

      window.onload = InhaltOeffnen;
   </script>
</head>

<body>
   <div id="Inhaltsbereich">
      Inhalt
   </div>
   <div id="Banner">
      Banner
   </div>
</body>

</html>

Sinnvoll ists auch, die TimeOuts wieder zu beenden.
  View user's profile Private Nachricht senden
bluespoon
Threadersteller

Dabei seit: 10.11.2006
Ort: Hannover
Alter: 37
Geschlecht: Männlich
Verfasst Mo 15.10.2007 16:17
Titel

re

Antworten mit Zitat Zum Seitenanfang

Okay ... aber warum muss ich das Timeout in 'ne Variable packen,
damit's läuft?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Raumwurm

Dabei seit: 21.12.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mo 15.10.2007 17:10
Titel

Antworten mit Zitat Zum Seitenanfang

Nur damit du den timeOut wieder beenden kannst.
clearTimeout braucht die Variable als Parameter.
  View user's profile Private Nachricht senden
 
Ähnliche Themen Javaskript fehler iE8 / iE7
IE7 Navigation Fehler | zweizeilige links werden verschluckt
IE 6 und IE7
Darstellungsproblem im IE7
Scrollproblem bei IE7
IE6 und IE7
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.