Umrechnung Zeit

soyo

Erfahrenes Mitglied
Hallo,

Ich habe eben ein kleines Skript geschrieben, welches mir Sekunden in Tage - Stunden - Minuten - Sekunden ausgibt. Das Problem ist das ich es in PHP geschrieben habe und keine Ahnung habe wie ich es in JS mache.

Das hab ich bisher:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
    	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
    	<title></title>
    	<script type="text/javascript">
		<!--			
			function getTimeFromSec(seks)
			{
				var sekunden = seks;
				var teiler = 0;
				
				var umrechnung = new Array(86400, 3600, 60, 1);
				
				
				for each (var einheit in umrechnung)
    			{
    				teiler = Math.floor(sekunden / einheit);    				
					sekunden = sekunden%teiler;    				   				

    				document.write(teiler);
    			} 
			}
		//-->
		</script>
  	</head>
  	<body>
  		<form name="Formular" action="">
			<input type="text" name="Eingabe" size="3">
			<input type="button" value="Quadrat errechnen" onclick="getTimeFromSec(10000)">
		</form>
  	</body>
</html>

Als Ergebnis bekomme ich 0NaNNaNNaN. In PHP funtkioniert der Algorithmus.

Gruß Thomas
 
Moin,

es gibt da ein paar Probleme, mal der Reihe nach:

1. foreach-Schleifen in JS sind nicht identisch mit denen in PHP.
Die darin verwendete Variable ist kein Zeiger auf den Wert des aktuellen Array-Elements, sondern der aktuelle Array-Index bzw. die aktuelle Objekt-Eigenschaft.
(vermeide es am Besten in JS, auf "echte" Arrays mit solchen Schleifen zuzugreifen...sie sind eigentlich für Objekte gedacht ;) )

2.
Code:
teiler = Math.floor(sekunden / einheit);    				
sekunden = sekunden%teiler;

Wenn teiler 0 ist(wie in deinem Beispiel)...wäre sekunden%teiler eine Division durch 0, was natürlich nicht geht.

3. Hat nichts mit der Berechnung zu tun, aber verwende write() niemals nach abgeschlossenem Ladevorgang der Seite, du überschreibst damit das komplette Dokument :eek:

Ergebnis dieser 3 Gesichtspunkte:
Javascript:
function getTimeFromSec(seks)
{
  var sekunden = seks;
  var umrechnung = {'Tage':86400,'Stunden':3600,'Minuten': 60,'Sekunden': 1}
				
  for(var k in umrechnung)
    {
      teiler = Math.floor(sekunden / umrechnung[k]);    				
      sekunden = sekunden%umrechnung[k];    				   				
      document.getElementsByTagName('body')[0].innerHTML+='<br>'+k+':'+teiler;
    } 
}
 

Neue Beiträge

Zurück