WinFuture-Forum.de: Javascript-funktionen Aus Externer Datei Mit Eventhandlern Aufrufen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Javascript-funktionen Aus Externer Datei Mit Eventhandlern Aufrufen onload und onclick rufen JS-Funktionen auf --> bekomme Fehler


#1 Mitglied ist offline   Xenon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 548
  • Beigetreten: 29. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich

  geschrieben 08. November 2008 - 19:43

Hi jungs un mädels,

also folgendes Problem. Ich hab mehrere Funktionen in eine .js ausgelagert.
Diese binde ich in meine HTML-Datei mit
<script src="admin_scripts.js" type="text/javascript"></script>

ein.

Der Code-Assist von Eclipse bietet mir dann auch schön diese Funktionen an.

Nun hab ich aber z.B. diesen Aufruf:
<body id="login_body" onload="countDown(); document.forms['login_form'].elements['Passwort'].focus();">


(Die countDown() zählt sekundenweise runter und gibt jede Sekunde eben aus)
Sollte ja gehen. Tuts aber nicht. Es passiert garnichts. Wenn ichs im IE aufruf, is ja unten links dieser kleine "Debugger"^^
Der sagt:

Zitat

Zeile: 13
Zeichen: 1
Fehler: Objekt erwartet


Zeile 13 ist diese <body>-zeile. Wobei Zeichen 1 nicht sein kann, dass is ja das < vom body.

Ja mit "Objekt erwartet" fang ich nun nichts an... Dachte auch schon vlt. mit admin_scripts.countDown(); aber nichts, dann kommt "admin_scripts ist nicht definiert".

Dieses Pseudo-OOP von JavaScript hatte ich auch schon kurz ausgetestet obs damit funkt. Aber tuts nicht (mal davon abgesehen, dass das OOP ja en Witz is in JS :))

Hier noch der Code der Funktion in der externen .js:
function countDown() {
		 document.getElementById('JScountdown').innerHTML = timeout.toString();
		 timeout --;
		 if (timeout < 0) {
			 window.location.href = './_inc/fail.html';
		 } else { 
			 setTimeout('countDown()', 1000);
		 }
	 }


Könnt ihr mir sagen, was ich falsch mache?

Es kommt mir so vor, als würde die HTML-Datei bei der Bearbeitung die .js nicht kennen, weil er irgendwie nicht auf die Funktion zugreifen kann...

Oder hab ich nur was übersehen?

Gruß
XeNoN
0

Anzeige



#2 Mitglied ist offline   lloiser 

  • Gruppe: aktive Mitglieder
  • Beiträge: 92
  • Beigetreten: 13. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 08. November 2008 - 20:21

wie sagt man unter XML so schön: ist das Dokument valid?
in dem Fall is es hald HTML. Hast eh einen HTML-Tag mit richtiger Definition gemacht? Oder einfach nur schnell den BODY-Tag hingeklatscht? Möglich dass er das ned mag.
Denken ist Arbeit
Arbeit ist Energie
und Energie soll man sparen
0

#3 Mitglied ist offline   Xenon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 548
  • Beigetreten: 29. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. November 2008 - 18:18

Nene, schon richtig. Hier mal der Quellcode der HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
	 <title>w00t-crew.de UploadService - Adminbereich</title>
	 <link rel="stylesheet" type="text/css" href="_inc/login_style.css" />
	 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	 
	 <!-- JavaScript-Lib einbinden //-->
	 <script src="admin_scripts.js" type="text/javascript"></script>
	 
 </head>
	 
 <body id="login_body" onload="countDown(); document.forms['login_form'].elements['Passwort'].focus();">
	 <div id="login_main_top">
		 <!-- Top-Bild -->
	 </div>
	 <div id="login_main">
		 wtf? Was willst'n du hier? Admin oder was?
		 
 
 <span id="login_main_inhalt">
		 <form name="login_form" method="post" onsubmit="return checkPassword(this.Passwort.value);" action="_inc/check_pw.php" class="formular">
			 Dann gib das Codewort ein: 
			 <input type="password" name="Passwort" class="login_form_input" />
			 aber zackig!
			 
 
 
			 Du hast noch <span id="JScountdown"> 7 </span> Sekunden...
		 </form>
		 </span>
		 
 
		 <hr width="70%" color="#ffffff">
		 <font size="-2">&copy; Copyright 2008 by crowblade</font>
 
	 </div>
 </body>
	 
 </html>


ouh jungs, sorry für Doppelpost, aber jetz wirds lustig.

Hab das jetz mal in der externen js als OOP gebastelt, sprich inne Klasse, damit ich mitn Objekt bauen kann und siehe da. Es klappt. Allerdings NUR im IE...

FF hält sich da raus :)

Ich kotz ab...
0

#4 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 762
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 12. November 2008 - 01:14

Ich habs mal schnell getestet, Ergebnis:

IE 5.5: Funktioniert.
IE 6: Funktioniert.
IE 7: Funktioniert.
IE 8 Beta: Funktioniert.

Opera 9.62: Funktioniert.

Firefox 3.1 Beta irgendwas: Funktioniert.

HTML Datei 1:1 übernommen und als "index.html" gespeichert, JavaScript Code in eine neue Datei mit dem Namen "admin_scripts.js" gepackt und schließlich "var timeout = 7;" ergänzt, und siehe da es geht, wobei ich den Code sehr befremdlich finde und das HTML ist auch nicht valid.
0

#5 Mitglied ist offline   Xenon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 548
  • Beigetreten: 29. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 12. November 2008 - 09:16

Ja hab ich gestern Abend auch gemerkt, das liegt nicht am Code selbst, sondern daran dass ich noch anderen Code in der .js hatte, der nicht ging und dann hat er die komplette .js nicht ausgeführt...
Sollte man halt vorher dran denken ;)

Warum is der Code befremdlich? Den hab ich ausm Netz (also JS), da ich mit JS ziemlich auf Kriegsfuß stehe :)
Das HTML is doch nur wegen paar Kleinigkeiten invalid.

Oder magst das mal genauer ausführen? Wär super :)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0