2017-01-30 3 views
0

Получение текущего времени, а затем отображать его с JavaScript

function timeNow(i) { 
 
     var d = new Date(), 
 
      h = (d.getHours() < 10 ? '0' : '') + d.getHours(), 
 
      m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes(); 
 
     i.value = h + ':' + m; 
 
    } 
 
    document.getElementById('dashboard-hello').innerHTML = timeNow();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="dashboard-hello"></div>

Я пытающегося получить текущее время с моей timeNow функции, а затем я желающей его, чтобы показать в моем #dashboard-hello ид. Я не уверен, что я делаю неправильно, но он не появляется. Если я вывезти() в timeNow, когда я пытаюсь сделать innerHTML, вся функция печатает

function timeNow(i) { var d = new Date(), h = (d.getHours() < 10 ? '0' : '') + d.getHours(), m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes(); i.value = h + ':' + m; } 

Кто-нибудь увидеть, что я делаю неправильно?

click for jsfiddle

пс - Когда я получаю время, работая, как я мог бы структурировать это в, если заявление, когда он 4: 00-11: 30, чтобы сказать: «Доброе утро», то же самое для обеда /вечер?

Обновленный код:

function timeNow() { 

     var d = new Date(), 
     h = (d.getHours() < 10 ? '0' + d.getHours() : '') + d.getHours(), 
     m = (d.getMinutes() < 10 ? '0' + d.getMinutes() : '') + d.getMinutes(); 

     // To check for a time range (between 4:: and 11:30 here): 
     var morningTime = (h >= 4 && h <= 11) && m <= 30 ? true : false; 
     var noonTime = (h >= 12 && h <= 17) && m <= 30 ? true : false; 
     var nightTime = (h >= 18 && h <= 3) && m <= 30 ? true : false; 
     console.log(morningTime); 

     if (morningTime == true) { 
      return "Good Morning"; 
     } 
     else if (noonTime == true) { 
      return "Good Afterboon"; 
     } 
     else if (nightTime == true) { 
      return "Good Evening"; 
     } 
     /* h = (d.getHours() < 10 ? '0' : '') + d.getHours(); 
     m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes();*/ 

     //return h + ':' + m; 
    } 
    document.getElementById('dashboard-hello').innerHTML = timeNow() + ', name'; 
+0

Вы не пропуская никаких аргументов в 'timeNow' при вызове его. – Gavin

+0

Ваша функция ничего не возвращает. Его конец должен заканчиваться чем-то вроде «return h +»: '+ m; ' –

ответ

1

Вы пытаетесь установить innerHTML из ваших div к результату функции, так что функция должна возвращать значение, а не пытаться установить value свойства на div (div s не имеют свойства value).

function timeNow() { 
 
    
 
    var d = new Date(), 
 
    // When the hour or minute is less than 10, you want to return 0 plus the hour or minute. 
 
    // You were just returning 0. 
 
    h = (d.getHours() < 10 ? '0' : '') + d.getHours(), 
 
    m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes(); 
 

 
    // If you are going to set something to a function, the function must return a value 
 
    return h + ':' + m; 
 
} 
 
    ' 
 
document.getElementById('dashboard-hello').innerHTML = timeNow();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="dashboard-hello"></div>

Чтобы проверить время, чтобы увидеть, если он находится между 4:00 и 11:30, вам потребуется несколько дополнительных тестов:

function timeNow() { 
 
    
 
    var d = new Date(); 
 
    
 
    var h = d.getHours(); 
 
    var m = d.getMinutes(); 
 
    
 
    // To check for a time range (between 4:: and 11:30 here): 
 
    var specialTime = (h >= 4 && h <= 11) && m <= 30 ? true : false; 
 
    
 
    
 
    // To check for a time range (between 4:: and 11:30 here): 
 
    var morningTime = (h >= 4 && h <= 11) && m <= 30 ? true : false; 
 
    var noonTime = (h >= 12 && h <= 17) && m <= 30 ? true : false; 
 
    var nightTime = (h >= 18 && h <= 3) && m <= 30 ? true : false; 
 
    
 
    var greeting = ""; 
 
    
 
    if (morningTime) { 
 
    greeting = "Good Morning"; 
 
    } else if (noonTime) { 
 
    greeting = "Good Afternoon"; 
 
    } else if (nightTime) { 
 
    greeting = "Good Evening"; 
 
    } 
 
    
 
    h = (d.getHours() < 10 ? '0' : '') + d.getHours(); 
 
    m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes(); 
 
    
 
    
 
    // If you are going to set something to a function, the function must return a value 
 
    return h + ':' + m + " (" + greeting + ")"; 
 
} 
 
document.getElementById('dashboard-hello').innerHTML = timeNow();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="dashboard-hello"></div>

+0

Кроме того,' timeNow() 'не нуждается в каких-либо аргументах таким образом. Вы можете полностью удалить «i». –

+0

Да. Спасибо, Джефф! –

+0

@ScottMarcus Спасибо! Поэтому, если бы я хотел проверить, будет ли 'h + ':' + m' находиться между 4:00 и 11:30, как будет структурирован этот оператор if? – Paul

0

Исправлен код. Вам нужно вернуть значение из функции, если вы присваиваете значение элементу HTML.

function timeNow() { 
 
     var d = new Date(), 
 
      h = (d.getHours() < 10 ? '0' : '') + d.getHours(), 
 
      m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes(); 
 
     return h + ':' + m; 
 
    } 
 
    document.getElementById('dashboard-hello').innerHTML = timeNow();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="dashboard-hello"></div>

0

Вот ваш код (Сорта), включая утро/день/вечер классификатором

function timeNow(i) {   
    var d = new Date();   
    var afternoon=new Date(d.getFullYear(),d.getMonth(),d.getDate(),11,30);   
    var evening =new Date(d.getFullYear(),d.getMonth(),d.getDate(),17,30); 
    var greeting=(d.getTime()>evening.getTime()?"Evening":(d.getTime()>afternoon.getTime()?"Afternoon":"Morning")); 

    return greeting + " " + ("00"+d.getHours()).slice(-2) + ":" + ("00"+d.getMinutes()).slice(-2); 

} 
document.getElementById('dashboard-hello').innerHTML = timeNow(); 
Смежные вопросы