2

我把头撞到墙上,试图弄清楚为什么这段代码不会运行。函数 isWorkingHour 肯定可以工作,因为我在这里使用它:Working Hours (Working Demo)

任何人都可以帮忙。这是JS代码:

function makecall()
{

if (isWorkingHour(now)) {
    //it's in schedule
    window.alert("Office is open");
    }
    else {
    window.alert("Office is close");    
    }
}


function isWorkingHour(now) {
return now.getDay() <= 4 && now.getHours() >= 9 && now.getHours() < 17;
}

我使用的 HTML 如下:

<input type="button" id="CallButton" class="callButton" value="Call" onclick="makecall()" />
        <p id="demo">Click the button to check if now is working hours</p>

这是我所坚持的 JSFiddle。http://jsfiddle.net/zfSTj/3

4

3 回答 3

1

首先,makecall它不是全局函数(它被包装在称为 onload 的函数中),因此您无法从内部事件属性访问它。

其次,你永远不会定义“现在”。

首先定义now

function makecall() {
    var now = new Date();

然后附加一个事件侦听器而不是使用onclick属性:

document.getElementById('CallButton').addEventListener('click', makecall);

如:http: //jsfiddle.net/zfSTj/8/

于 2013-11-07T16:22:55.580 回答
1

在 JSFiddle 中很清楚:now未定义变量。替换nownew Date()

于 2013-11-07T16:23:03.667 回答
1
makecall = function() {

    if (isWorkingHour(new Date())) {
        //it's in schedule
        document.getElementById("demo").innerHTML = "Office is open";
    } else {
        document.getElementById("demo").innerHTML = "Office is closed";
    }
}

这样做是为了创建makecall一个全局函数,以便您可以在 JSFiddle 中访问它。

我还继续用now你的原始参数(在传递时不存在)替换了new Date()

于 2013-11-07T16:23:05.620 回答