Javascript concat()不能正常工作

时间:2015-03-12 01:44:41

标签: javascript concat uncaught-typeerror

<!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不是一个函数”,它拒绝继续。我想做的就是指明它是否在一定时间之后我们是开放,关闭还是午餐。时间表从未真正改变,所以它不需要比这更先进。

2 个答案:

答案 0 :(得分:2)

concat()用于连接两个数组。你只想加入两个字符串。尝试

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

答案 1 :(得分: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);