JavaScript Problem - IE zeigt Fehler

  • Themenstarter Themenstarter mlaukel
  • Beginndatum Beginndatum
M

mlaukel

Hallo,
ich habe 3 Uhren per JS auf meiner Website eingebaut. Nur zeigen alle IE Versionen Fehler an.

Das Skript ist ausgelagert und ist im HTML-Code wie folgt eingebunden:
Code:
     <center><b>Berlin</b></center>
     <div id="js_clock1" align="center">
      <script src="clock.js" type="text/javascript"></script>
     </div>
     <center><b>Tokio</b></center>
     <div id="js_clock2" align="center">
      <script src="clock.js" type="text/javascript"></script>
     </div>
     <center><b>New York</b></center>
     <div id="js_clock3" align="center">
      <script src="clock.js" type="text/javascript"></script>
     </div>

Das Skript selbst:
Code:
function js_clock1()
{
 var clock_time = new Date();
 var clock_hours = clock_time.getHours();
 if (clock_hours > 23)
 {
  clock_hours = clock_hours - 24;
 }
 if (clock_hours < 0)
 {
  clock_hours = 24 + clock_hours;
 }
 var clock_minutes = clock_time.getMinutes();
 var clock_seconds = clock_time.getSeconds();
 if (clock_hours < 10)
 {
  clock_hours = "0" + clock_hours;
 }
 if (clock_minutes < 10)
 {
  clock_minutes = "0" + clock_minutes;
 }
 if (clock_seconds < 10)
 {
  clock_seconds = "0" + clock_seconds;
 }
 var clock_div = document.getElementById("js_clock1");
 clock_div.innerHTML = clock_hours + ":" + clock_minutes + ":" + clock_seconds;
 setTimeout("js_clock1()", 1000);
}
js_clock1();

function js_clock2()
{
 var clock_time = new Date();
 var clock_hours = clock_time.getHours() + 7;
 if (clock_hours > 23)
 {
  clock_hours = clock_hours - 24;
 }
 if (clock_hours < 0)
 {
  clock_hours = 24 + clock_hours;
 }
 var clock_minutes = clock_time.getMinutes();
 var clock_seconds = clock_time.getSeconds();
 if (clock_hours < 10)
 {
  clock_hours = "0" + clock_hours;
 }
 if (clock_minutes < 10)
 {
  clock_minutes = "0" + clock_minutes;
 }
 if (clock_seconds < 10)
 {
  clock_seconds = "0" + clock_seconds;
 }
 var clock_div = document.getElementById('js_clock2');
 clock_div.innerHTML = clock_hours + ":" + clock_minutes + ":" + clock_seconds;
 setTimeout("js_clock2()", 1000);
}
js_clock2();

function js_clock3()
{
 var clock_time = new Date();
 var clock_hours = clock_time.getHours() - 6;
 if (clock_hours > 23)
 {
  clock_hours = clock_hours - 24;
 }
 if (clock_hours < 0)
 {
  clock_hours = 24 + clock_hours;
 }
 var clock_minutes = clock_time.getMinutes();
 var clock_seconds = clock_time.getSeconds();
 if (clock_hours < 10)
 {
  clock_hours = "0" + clock_hours;
 }
 if (clock_minutes < 10)
 {
  clock_minutes = "0" + clock_minutes;
 }
 if (clock_seconds < 10)
 {
  clock_seconds = "0" + clock_seconds;
 }
 var clock_div = document.getElementById('js_clock3');
 clock_div.innerHTML = clock_hours + ":" + clock_minutes + ":" + clock_seconds;
 setTimeout("js_clock3()", 1000);
}
js_clock3();

IE 7.0 spuckt folgendes aus:
Zeile: 61
Zeichen: 2
Fehler: 'null' ist Null oder kein Objekt
Code: 0

und

Zeile: 93
Zeichen: 2
Fehler: 'null' ist Null oder kein Objekt
Code: 0

Leider reichen meine JS-Kenntnisse nicht aus um den Fehler selbst lokalisieren zu können. Ich hoffe jemand von euch kann mir helfen. Danke !

Gruß
Martin
 
Ich gehe stark davon aus, du hast das Script selbst geschrieben und bist einfach nur Verwirrt und siehst den Wald vor lauter Bäumen nicht mehr!

Ich denke der Fehler liegt in deiner Inkrementierung!

Wiso machst du das eingentlich so umständlich?

Eine Var beschreibt "new Date" und 3 andere Stunden, Minuten und Sekunden - alle inkrementieren und via "return document.getElementById" ausgeben lassen!

mfg thecamillo
 
Hi,

übrigens spuckt auch die Firefox-Fehlerkonsole diese Fehlermeldungen aus.

mfg Maik
 
Das Problem ist: Bin absoluter JavaScript Anfänger und das ist das einzige JavaScript auf der ganzen Website von mir.

Das Skript hat mir ein Bekannter gemacht, nur hat der offensichtlich keinen Plan, sonst hätte ich ja jetzt keinen Fehler...

Wäre nett ihr könntet mir den Code berichtigen bzw. ändern und hier komplett posten. Weil ich einfach zu wenig von JavaScript verstehe als das ich das selbst hinbekommen würde.
 
Hi,

das Script funktioniert schon richtig. Du bindest nur dreimal das gleiche ein. Davon zweimal an Stellen, an denen HTML-Elemente noch nicht vorhanden sind - z.B. die Elemente mit den IDs js_clock2 und js_clock2 wenn das Script zum ersten Mal eingebunden wird.

Binde stattdessen das Script einmalig nach den Ausgabeelementen ein.
Code:
<center><b>Berlin</b></center>
<div id="js_clock1" align="center">
</div>
<center><b>Tokio</b></center>
<div id="js_clock2" align="center">
</div>
<center><b>New York</b></center>
<div id="js_clock3" align="center">
</div>
<script src="clock.js" type="text/javascript"></script>
Ciao
Quaese
 
Vielen Dank !

Auch für die Erläuterung, jetzt ist mir klar wo es gehakt hat. Und wieder schlauer geworden :)
 

Neue Beiträge

Zurück