HighDots Forums  

Problem mit Counter...

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Problem mit Counter... in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Manuel Hegemann
 
Posts: n/a

Default Problem mit Counter... - 03-16-2005 , 11:10 AM






Hallo NG,

habe einen Counter programmiert. Leider bekomme ich keine Ausgabe bei
dem folgenden Skript...
Danke für Eure Hilfe

Manuel

<script language="JavaScript">

function tuningctr()
{
var now = new Date(<?php echo date("M d Y H:i:s"); ?>);
var endctr = new Date(<?php echo date("M d Y H:i:s", $row["zeit"]); ?>);

var seconds = (endctr - now) / 1000;
seconds = math.round(seconds);

var minutes = seconds / 60;
minutes = math.round(minutes);

var hours = minutes / 60;
hours = math.round(hours);

var days = hours / 24;
days = math.round(days);

if(days < 0)
{
days = 0;
}

if(hours < 0)
{
hours = 0;
}

if(minutes < 0)
{
minutes = 0;
}

if(seconds < 0)
{
seconds = 0;
}

document.muh.muha.value = days + " Tage, " + hours + " Stunden, " +
minutes + " Minuten und " + seconds + " Sekunden";

window.setTimeout("tuningctr()", 1000);
}

</script>

Reply With Quote
  #2  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Problem mit Counter... - 03-16-2005 , 11:24 AM






Manuel Hegemann wrote:

Quote:
habe einen Counter programmiert. Leider bekomme ich keine Ausgabe bei
dem folgenden Skript...
Bitte lies http://glasgoogle.de, um zu erfahren, dass sehr wohl eine
Ausgabe erfolgt (jedoch nicht dort, wo Du es erwartest, sondern dort,
wo Skriptfehler angezeigt werden).

JS ist case sensitive, "Math" ist nicht dasselbe wie "math".

Im Übrigen sind da eine ganze Anzahl Fehler in dem Skript, die Du
aber wohl selbst sofort sehen wirst, sobald die Ausgabe an der von
Dir gewünschten Stelle stattfindet.

ciao, dhgm



Reply With Quote
  #3  
Old   
Manuel Hegemann
 
Posts: n/a

Default Re: Problem mit Counter... - 03-16-2005 , 12:22 PM



Georg Maaß schrieb:
Quote:
Manuel Hegemann wrote:

Hallo NG,

habe einen Counter programmiert. Leider bekomme ich keine Ausgabe bei
dem folgenden Skript...
Danke für Eure Hilfe

Manuel

script language="JavaScript"

function tuningctr()
{
var now = new Date(<?php echo date("M d Y H:i:s"); ?>);
var endctr = new Date(<?php echo date("M d Y H:i:s", $row["zeit"]); ?>);
/script


Das kann gar nicht sein, daß das keine Ausgabe gibt. Schau mal in die
JavaScript-Konsole. Wenn ich da sowas eingebe:

a = new Date(10 31 2000 10:12:13); alert(a);

dann bekomme ich das:

Error: missing ) after argument list
Source File: javascript: a = new Date(10 31 2000 10:12:13); alert(a);
Line: 1, Column: 17
Source Code:
a = new Date(10 31 2000 10:12:13); alert(a);
^
|
------------------+


Wenn ich es so variiere, wie es wahrscheinlich gedacht war:

a = new Date('10 31 2000 10:12:13'); alert(a);

bekomme ich den alert "invalid date".

Die Date-Funktion erwartet als Argument entweder eine Ganzzahl, welche
die Anzahl Millisekunden seit Beginn der Epoche angibt, oder ein
Datums-Objekt oder einen Datumsstring im richtigen Format, oder jede
Datumskomponente einzeln als Zahl. Wie tolerant bezüglich
unterschieldicher Formate das ganze als Datumsstring ist, ist
implementierungsspezifisch.

new Date('Jan, 6, 2002'); // Epiphanias im Jahr 2002
d3 = new Date(2002,0,6,11,16,23); // Epiphanias im Jahr 2002 um 11:16
Uhr und 23 Sekunden

Gruß, Georg
Danke für die Tips! Beide haben mich nun zu folgendem Ergebnis gebracht:
<script language="JavaScript">
function tuningctr()
{
var now = new Date();
var endctr = new Date(<?php echo date("'M d Y H:i:s'", $row["zeit"]); ?>);

var tmp = endctr - now;
//alert(tmp);

var seconds = (endctr - now) / 1000;
seconds = Math.floor(seconds);

var minutes = seconds / 60;
minutes = Math.floor(minutes);

var hours = minutes / 60;
hours = Math.floor(hours);

days = hours / 24;
days = Math.floor(days);

if(days < 0)
{
days = 0;
}

if(hours < 0)
{
hours = 0;
}

if(minutes < 0)
{
minutes = 0;
}

if(seconds < 0)
{
seconds = 0;
}

document.ctrform.ctrinput.value = days + " Tage, " + hours + " Stunden,
" + minutes + " Minuten und " + seconds + " Sekunden";

window.setTimeout("tuningctr()", 1000);
}
</script>

Leider werden die Sekunden falsch angezeigt... wenn mir hier noch einer
sagen könnte woran das liegt die liegen im 1000er bereich und das
machen sekunden ja bekanntlich normalerweise nicht

Danke schon jetzt!
Manuel


Reply With Quote
  #4  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Problem mit Counter... - 03-16-2005 , 01:00 PM



Manuel Hegemann wrote:

Quote:
Georg Maaß schrieb:
Manuel Hegemann wrote:
habe einen Counter programmiert. Leider bekomme ich keine Ausgabe bei
dem folgenden Skript...
[...]
script language="JavaScript"

function tuningctr()
{
var now = new Date(<?php echo date("M d Y H:i:s"); ?>);
var endctr = new Date(<?php echo date("M d Y H:i:s", $row["zeit"]); ?>);
/script

Das kann gar nicht sein, daß das keine Ausgabe gibt. Schau mal in die
JavaScript-Konsole.
[...]
new Date('Jan, 6, 2002'); // Epiphanias im Jahr 2002
d3 = new Date(2002,0,6,11,16,23); // Epiphanias im Jahr 2002 um 11:16
Uhr und 23 Sekunden
[...]

Danke für die Tips! Beide haben mich nun zu folgendem Ergebnis gebracht:
script language="JavaScript"
Korrekt ist mindestens

<script type="text/javascript">

wie Dir der W3C-Validator <http://validator.w3.org/> verrät.

Quote:
function tuningctr()
{
var now = new Date();
var endctr = new Date(<?php echo date("'M d Y H:i:s'", $row["zeit"]); ?>);
<OT topic="PHP">

Die Doublequotes um die Singlequotes sind überflüssig. Die
Doublequotes um `zeit' sind ineffizient; benutze Singlequotes,
wenn innerhalb des (PHP-)Strings keine Variablenexpansion
stattfinde(t|n soll).

</OT>

Quote:
********var tmp = endctr - now;
********//alert(tmp);

********var seconds = (endctr - now) / 1000;
********seconds = Math.floor(seconds);

********var minutes = seconds / 60;
********minutes = Math.floor(minutes);
[...]
********if(days < 0)
^^^^^^^^
********{
**********days*=*0;
********}
[...]
Ich frage ich mich, wie Du darauf kommst, dass die hier abgefangenen
Fälle jemals eintreten könnten. Überprüfe lieber, dass ein Date-Objekt
zurückgeliefert wird, bevor Du damit herumrechnest. Nur ein Date-Objekt
kann nämlich mittels Date.prototype.getTime() für die Subtraktion geeignet
konvertiert werden.

Quote:
document.ctrform.ctrinput.value =
Abwärtskompatibel und standardkonform ist

document.forms['ctrform'].elements['ctrinput'].value =

Quote:
days + " Tage, " + hours + " Stunden,
" + minutes + " Minuten und " + seconds + " Sekunden";

window.setTimeout("tuningctr()", 1000);
}
/script

Leider werden die Sekunden falsch angezeigt... wenn mir hier noch einer
sagen könnte woran das liegt die liegen im 1000er bereich und das
machen sekunden ja bekanntlich normalerweise nicht
PEBCAK. Deine Rechnung ist kompletter Unfug. Du berechnest die Anzahl
Sekunden zwischen zwei Zeitpunkten und speicherst die in `seconds'. Soweit
OK. Nur: das sind keineswegs die Sekunden, die zwischen d Tagen h Stunden
m Minuten 0 Sekunden und d Tagen h Stunden m Minuten `seconds' Sekunden
vergangen sind!

Ausserdem solltest das ISO-Format YYYY-MM-DDThh:mm:ss+ZZ:zz verwenden
oder gleich Eigenschaften des PHP-Arrays als Parameter für den
Date()-Konstruktor verwenden.

Deine bandbreitenverschwendenden Fullquotes sind übrigens nicht mehr
feierlich, lies dringend <http://got.to/quote>!


HTH & HAND

PointedEars
--
Wenn man zwei Stunden lang mit einem netten Mädchen zusammensitzt, meint
man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen
Ofen, meint man, es wären zwei Stunden. Das ist Relativität.
-- Albert Einstein


Reply With Quote
  #5  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Problem mit Counter... - 03-16-2005 , 01:11 PM



Thomas 'PointedEars' Lahn wrote:

Quote:
Manuel Hegemann wrote:
function tuningctr()
{
var now = new Date();
var endctr = new Date(<?php echo date("'M d Y H:i:s'", $row["zeit"]);
?>);

OT topic="PHP"

Die Doublequotes um die Singlequotes sind überflüssig. Die
Doublequotes um `zeit' sind ineffizient; benutze Singlequotes,
wenn innerhalb des (PHP-)Strings keine Variablenexpansion
stattfinde(t|n soll).

/OT
Dabei habe ich allerdings übersehen, dass die zusätzlichen Quotes für
JavaScript benötigt werden. Der *erste* Parameter ist also so OK.
Allerdings schrübe ich stattdessen:

var endctr = new Date('<?php echo date('Y-M-dTH:i:s', $row['zeit']); ?>');


PointedEars
--
Wunder sind nicht immer Geheimnisse.
-- J. W. Goethe


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.