2015-03-12 3 views
2
<!DOCTYPE html> 
<html> 
<script> 
function myFunction() { 
    var objDate = new Date(); 
    var hours = objDate.getHours(); 
    var mins = objDate.getMinutes(); 
    var time = hours.concat(mins); 
    window.alert(time); 
    if (time>=1600&&time<=0900) { 
     document.body.style.background ="url('closed.png') no-repeat"; 
    } else if (time>=1230&&time<=1315) { 
     document.body.style.background ="url('lunch.png') no-repeat"; 
    } else { 
     document.body.style.background ="url('open.png') no-repeat";   
    } 
} 
setInterval(myFunction, 3000); 
</script> 
</html> 

По строке 8 "var time = hours.concat (mins);" Я получаю «Uncaught TypeError: undefined не является функцией», и он отказывается продолжать. Все, что я хочу сделать, это указать, может ли это быть между определенным временем, тогда мы открыты, закрыты или за обедом. График никогда не меняется, поэтому ему не нужно быть более продвинутым, чем это.Javascript concat() не работает как должно быть

+0

Есть ли способ получить как часы, так и минуты в одном, чтобы проверить время или нет «простого» способа сделать это? –

ответ

1

getHours() возвращает число, так что не имеет метода concat, так что ваш сценарий должен бросить ошибку говоря Uncaught TypeError: undefined is not a function

function myFunction() { 
    var objDate = new Date(); 
    var hours = objDate.getHours()+''; 
    var mins = objDate.getMinutes(); 
    var time = hours.concat(mins); //or hours + ':' + mins 
    window.alert(time); 
} 
setInterval(myFunction, 3000); 

Но для расчета связанного с фоновым стиле, это будет лучше использовать время в минутах

function myFunction() { 
    var objDate = new Date(); 
    var hours = objDate.getHours(); 
    var mins = objDate.getMinutes(); 
    var time = hours * 60 + mins; 

    if (time >= 960 || time <= 540) { 
     document.body.style.background = "url('closed.png') no-repeat"; 
    } else if (time >= 750 && time <= 795) { 
     document.body.style.background = "url('lunch.png') no-repeat"; 
    } else { 
     document.body.style.background = "url('open.png') no-repeat"; 
    } 
} 
setInterval(myFunction, 3000); 
+0

Спасибо за быстрый ответ. Это на самом деле имеет больше смысла, чем то, о чем я думал. –

2

concat() предназначен для соединения двух массивов. Вы просто хотите присоединиться к двум строкам. Попробуйте

var time = hours.toString() + mins.toString();