2011-08-16 4 views
0

Voici le résultat final. Je le mets à jour pour qu'à l'avenir, des questions comme celle que j'ai posté à l'origine (comment faire une horloge de 12 heures) puissent être envoyées à ce fil à titre de référence. Merci à MrChief pour son aide!Très simple Javascript Question

<html> 
<head> 
    <script type="text/javascript"> 
     String.prototype.lpad = function(padString, length) { 
     var str = this; 
     while (str.length < length) { 
     str = padString + str; 
     } 
     return str; 
     } 
     function timeNow() { 
     var today = new Date(); 
     var h = today.getHours(); 
     var m = today.getMinutes(); 
     var s = today.getSeconds(); 
     var tt = (h >= 12) ? " pm" : " am"; 
     time = (h - 12).toString().lpad("0", 2) + ":" + m.toString().lpad("0", 2) + ":" + s.toString().lpad("0", 2) + tt; 
     document.getElementById('txt').innerHTML=time; 
     var timer = setTimeout(timeNow,500); 
     } 
     </script></head>  
     <body onload="timeNow()"> 
      <div id="txt"></div> 
     </body></html> 
+5

Bienvenue à SO! "Ne fonctionne pas" n'est jamais une bonne description du problème Qu'est-ce qui ne fonctionne pas comme prévu? Voyez-vous des erreurs dans la console d'erreur? Avec cette information, il devient beaucoup plus facile d'aider. –

+0

Tout d'abord, vous avez beaucoup d'erreurs de syntaxe.Essayez d'abord de les corriger puis éditez votre question avec les problèmes que vous rencontrez. – Koralarts

Répondre

4

Peut-être que vous vouliez dire

i="0" + i + "am"; 
     ^

et votre fonction checkTime manque parens de clôture.

Mise à jour:

Il y a de meilleures façons de faire un rembourrage. Voici une fonction qui modifie le prototype de string qui ajoute une fonction de remplissage à gauche aux objets de chaîne.

//pad left 
String.prototype.lpad = function(padString, length) { 
    var str = this; 
    while (str.length < length) 
     str = padString + str; 
    return str; 
} 

En utilisant cela, votre fonction devient beaucoup plus simple:

function timeNow() { 
    var today = new Date(); 
    var h = today.getHours(); 
    var m = today.getMinutes(); 
    var s = today.getSeconds(); 

    var tt = (h >= 12) ? " pm" : " am"; 
    time = h.toString().lpad("0", 2) + ":" + m + ":" + s.toString().lpad("0", 2) + tt; 

    alert(time); 
} 

Démo: http://jsfiddle.net/mrchief/kTQnM/7/

Voici démo complète en utilisant votre HTML: http://jsfiddle.net/mrchief/kTQnM/10/

+0

@ user895051: Vérifiez ma mise à jour. – Mrchief

+0

@ user895051: Je ne vois aucune mise à jour dans la zone principale. – Mrchief

+0

@ user895051: Vérifiez mon violon mis à jour. J'espère que vous trouverez cela assez simple! De plus, votre HTML n'a pas d'élément 'clock '. De plus, il a un "' "supplémentaire à la fin. – Mrchief

0

Vous essayez de définir am/pm de minutes et secondes plutôt que d'heures. Cela devrait être une fonction séparée par exemple

var am_pm = (h < 12) ? 'am' : 'pm'; 
m = (m < 10) ? '0' + m : m; 
s = (s < 10) ? '0' + s : s; 

De même, plusieurs erreurs de syntaxe, par ex. else (10<i<12) devrait être else if (i > 10 && i < 12)

0

changement

else (10<i<12) 

à autre (10 < i & & i < 12)

(1010, cela devient (vrai) < 12 qui évaluera true

.