• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Java script - nur uhrzei anzeigen ...

BDG

Mitglied
Hallo Leute ... Ich habe mir aus dem Internet eine Uhr mit java script kopiert .... das sieht so aus :
im head bereich :
Code:
  <script type="text/javascript"> 
function uhrzeit()
{
  zeit=new Date();               
  document.demo.uhr.value=zeit.toLocaleString();
  window.setTimeout("uhrzeit();",800);
}
</script>
     <script type="text/javascript">
im body bereich:
HTML:
<form name="demo">  <!-- HTML-Formular definieren -->
<input type=text name="uhr" value="JAva-scribt" size="30">
  <!-- Dies ist das Textfeld -->
</form>
so nun will ich aber das da nur stunden und minuten angezeigt werden nichts anderes ...
Und dann wolte ich noch fargen ob das auch ohne Textfeld dahinter geht also nur als text .. ich hoffe ihr könnt mir helfen :)
 
Hallo, (wieder :O) )


klar hier ein beispiel.:
Code:
<html><head>
<title>Uhrzeit</title>
<script type="text/javascript">
<!--
function ausgabezeit()
{
 a = new Date();
 b = a.getHours(); c = a.getMinutes(); d = a.getSeconds();
 if(b < 10){b = '0'+b;}
 if(c < 10){c = '0'+c;}
 if(d < 10){d = '0'+d;}
 zeit = b+':'+c+':'+d;
 document.all.uhrzeit.innerHTML = zeit;
}
 window.setInterval('ausgabezeit()',1000)
//-->
</script>
</head>
<body>
<div id="uhrzeit">Uhrzeit_Anzeigen</div>

</body>
</html>

Cheffchen
 
Das funktioniert aber nicht ... Ich habs alles genau rauskopiert ... Und nun steht da nur : Uhrzeit_anzeigen
 
Cheffchens Lösung ist auch schlecht von der Idee her.
Jede Sekunde ein Date-Objekt zu initialisieren, ist keine gute Idee. Man sollte ebenfalls nicht die eval-Kapazität in setInterval() benutzen. Außerdem wird in JavaScript angeraten, die Akkoladen auf der selben Zeile wie die Funktionsdefinitionen, Schleifen und Bedingungen zu setzen. Und zuletzt, nimmt er keine Rücksicht auf globale Variablen und lokale Variablen.

Das hier funktioniert:
PHP:
var zeit = {};
var zeit_anzeigen = function() {
  var jetzt = zeit;
  var stunden = jetzt.stunden;
  var minuten = jetzt.minuten;
  var sekunden = jetzt.sekunden;
  document.getElementById("zeit").innerHTML = (stunden<10?"0"+stunden:stunden)+":"+(minuten<10?"0"+minuten:minuten)+":"+(sekunden<10?"0"+sekunden:sekunden);
};
window.onload = function() {
  var start_zeit = new Date();
  zeit.sekunden = start_zeit.getSeconds();
  zeit.minuten = start_zeit.getMinutes();
  zeit.stunden = start_zeit.getHours();
  zeit_anzeigen();
  window.setInterval(function() {
    var jetzt = zeit;
    jetzt.sekunden+= 1;
    if (jetzt.sekunden == 60) {
      jetzt.sekunden = 0;
      jetzt.minuten+= 1;
    }
    if (jetzt.minuten == 60) {
      jetzt.stunden+= 1;
      jetzt.minuten = 0;
    }
    if (jetzt.stunden == 24) {
      jetzt.stunden = 0;
    }
    zeit_anzeigen();
  }, 1000);
};
HTML:
<body>
<p id="zeit"></p>
</body>
 
Hallo,

also Asterixus funzt 100%, musst natürlich beim obersten <script type="text/javascript"> und </script> einfügen, is ja klar.
OK, meins war misst und nicht so Optimal. *kopf nach unten neige*

Cheffchen
 
Hallo,

also Asterixus funzt 100%, musst natürlich beim obersten <script type="text/javascript"> und </script> einfügen, is ja klar.
OK, meins war misst und nicht so Optimal. *kopf nach unten neige*

Cheffchen

Mir ist erst gerade beim Wiederlesen aufgefallen, dass mein Beitrag was zu sehr agressiv verfasst war, tut mir Leid.

BDG, mein Script funktioniert so wie Cheffchen es gesagt hat. Wenn du Hilfe brauchst, solltest du uns die Mittel dazu geben, dir zu helfen; mit anderen Worten, zeige die Datei, in der du den Code integriert hast.
Selbst in IE5.0 (in IE4 kann ich nicht testen) funktioniert das Script...
 
Cheffchens Lösung ist auch schlecht von der Idee her.
Jede Sekunde ein Date-Objekt zu initialisieren, ist keine gute Idee.
Wieso ist das keine gute Idee? Das Objekt wird sofort nach verlassen der Funktion (automatisch) wieder entfernt.

Dein Vorschlag mit einem Timer, ist absolut unzuverlässig und ungenau, da sowohl setInterval, als auch setTimeout nur Vorschläge sind, wann was passieren soll, die tatsächliche Ausführung kann der Browser selbst bestimmen.
 
Ein Objekt wird in Internet Explorer nicht automatisch entfernt!
Ich habe keinerlei Probleme mit der Genauigkeit eines Intervals gehabt bisher. Bei einer Seite, die ich 5 Tage lang offen hatte, war meine Uhr nichtmal um eine Sekunde verrutscht, selbst nicht in IE6 (ich habe sowas schon öfter gemacht).
 
Dann hast du vielleicht am Rechner nichts anderes gemacht, normal ist das nicht. Wie gesagt, diese Timeouts sind keine zeitgenauen Interrupts, sondern eher eine Art Vorschlag wann die Aktion ausgeführt wird.

Ein Objekt wird entfernt, die Speicherlöcher im IE kommen (oder kamen, mittlerweile soll das besser geworden sein) durch zirkuläre Referenzen die der IE nicht entfernt. Ein normales new Date() fällt da nicht drunter.
 
Das mag zwar theoretisch so sein, aber ich habe mehrere Rechner (davon gute und schlechte/langsame/alte), auf denen ich Countdowns sekundengenau ausführen lasse und nie hatte ich Probleme. Genauso ist die Benutzung von Date ungenau, weil es das Datum des Clients nimmt, was im Web niemals als Referenz dienen sollte. Ideal wäre ein Timeout, das ständig ausgeführt würde und ständig nach der Serverzeit fragen würde.
 
Genauso ist die Benutzung von Date ungenau, weil es das Datum des Clients nimmt, was im Web niemals als Referenz dienen sollte.
Wieso im Web? Es ging doch darum die Uhrzeit anzuzeigen (was an sich überflüssig ist) und da heutzutage die meisten Systeme ihre Uhrzeit online abgleichen, dürfte das Date Obekt diese Uhrzeit sehr genau anzeigen.
Wie gesagt, wenn nichts anderes im Browser passiert, dann klappt das mit dem Interval, muss aber nicht. wenn ich einen genauen Zeitinterval messen will benutze ich nur das Date Objekt
 
Zurück
Oben