2011-08-16 7 views
0

Heres окончательный результат. Я обновляю его так, чтобы в будущем вопросы, подобные тому, который я изначально опубликовал (как сделать 12-часовые часы), могут быть перенаправлены в этот поток для справки. Спасибо MrChief за помощь!Очень простой Javascript Вопрос

<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

Добро пожаловать в SO! «Не работает» никогда не бывает хорошим описанием проблемы. Что не так, как вы планировали? Вы видите какие-либо ошибки в консоли ошибок? С этой информацией становится намного легче помочь. –

+0

Прежде всего, у вас много синтаксических ошибок.Попробуйте исправить их, а затем отредактируйте свой вопрос с проблемами, которые у вас есть. – Koralarts

ответ

4

Может быть, вы имели в виду

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

и ваша checkTime функция отсутствует закрывающие скобки.

Update:

Есть лучшие способы сделать отступы. Вот функция, которая изменяет string's prototype, который добавляет левую функцию дополнения к строковым объектам.

//pad left 
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.toString().lpad("0", 2) + ":" + m + ":" + s.toString().lpad("0", 2) + tt; 

    alert(time); 
} 

Демо: http://jsfiddle.net/mrchief/kTQnM/7/

Вот полный демо с помощью HTML: http://jsfiddle.net/mrchief/kTQnM/10/

+0

@ user895051: Проверьте мое обновление. – Mrchief

+0

@ user895051: Я не вижу никаких обновлений в основной области. – Mrchief

+0

@ user895051: Проверьте мою обновленную скрипку. Надеюсь, вы найдете это достаточно простым! Кроме того, ваш HTML не имеет элемента «clock». Кроме того, у него есть дополнительный «' »в конце. – Mrchief

2
  • function checkTime не хватает его закрывающую скобку ,
  • вы накладываете am и pm на свои минуты и секунды.

Попробуйте запустить JavaScript в среде, такой как jsFiddle во время разработки.

Вот код: http://jsfiddle.net/kTQnM/2/

enter image description here

Чтобы получить AM/PM работает, как вам нужно, рекомендуем использовать этот метод: Converting 24 hour time to 12 hour time w/ AM & PM using Javascript

0

Вы пытаетесь установить AM/PM от минуты и секунды а не от часов. Это должна быть отдельная функция, например,

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

Также имеется несколько синтаксических ошибок, например. else (10<i<12) должен быть else if (i > 10 && i < 12)

0

Изменить

else (10<i<12) 

к еще (10 < я & & я < 12)

(1010, это становится (истина) < 12, который будет оценивать ИСТИНА.

Смежные вопросы