创建一个函数来检查业务是否已打开并将文本写入html

时间:2015-10-25 01:47:19

标签: javascript

我想创建一个脚本,检查时间是工作日上午10点到晚上10点之间,周末上午10点到午夜之间。在它做到这一点后,我最终想要它,以便它将显示在一个网站上#34;我们是开放的(取决于它的工作日与否)"或者"我们在上午10点开始营业。如果他们关闭了。警报框是暂时的,而我试图弄明白这一点。这是我到目前为止所拥有的。

我已经编辑了CrakC指出的错误,我现在正尝试将文本添加到ID为#are; isWeOpen'

的div中

也应该在头部或身体?应该在浏览器读取id之前调用它吗?



			function checkIfOpen() {
			  var now = new Date();
			  var day = now.getDay();
			  var time = now.getHours();
			  var open, weekday, ;
			  var closed = "We will open at 10Am";
			  var openWeekday = "We are open till 10Pm";
			  var openWeekend = "We are open till midnight";

			  if (time >= 10) {
			    var open = true;
			  } else {
			    var open = false;
			  }

			  if (day >= 1 && day <= 4) {
			    var weekday = true;
			  } else {
			    var weekday = false;
			  }
			  if (open === true && weekday === true) {
			    document.getElementById('areWeOpen').innerHTML(openWeekday);
			  } else if (open === true && weekday === false) {
			    document.getElementById('areWeOpen').innerHTML(openWeekend);
			  } else {

			    document.getElementById('areWeOpen').innerHTML(closed);
			  }
			};
			checkIfOpen();
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

只需设置关闭时的默认值,然后根据检查更改这些值,即可保存多行代码。这也更具可读性和可维护性。

innerHTMLtextContent是属性,而不是方法。这意味着您将内容分配给他们而不是尝试使用括号调用它们。但是,如果您只是插入文本,则应使用textContent

(function checkIfOpen() {
    var now = new Date();
    var day = now.getDay();
    var hour = now.getHours();
  
    var otime = 10;
    var ctime = 24;
    var msg = "we open at "+otime+"am";
    var until = "midnight";
  
    if (day >= 1 && day <= 4) ctime = 22, until = "10pm";
    if (hour >= otime && hour <= ctime) msg = "we are open until " + until;
  
    document.getElementById('areWeOpen').textContent = msg;
})();
<div id="areWeOpen"></div>

答案 1 :(得分:1)

这应该可以解决您的问题。你的代码中有很多错误 -

function checkIfOpen()
    {
        var now = new Date();
        var day = now.getDay();
        var time = now.getHours();
        var open, weekday; //declaring variables here so that there are accessible outside the two 'if's

        if (time >= 10) {
            open = true;
        } else {
            open = false;
        } //no semi-colon required here

        if (day >= 1 && day <= 4) {
            weekday = true;
        } else {
            weekday = false;
        } //no semi-colon required here

        if (open === true && weekday === true) //using === for comparision instead of ==
        {
            alert("we are open till 10pm");
        }
        else if (open === true && weekday === false) //using 'else if' instead of `if else`
        {
            alert("we are open till midnight"); //semi-colon required here
        }
        else
        {
            alert("we open at 10am");
        }
    }

JS Bin - http://jsbin.com/fujazovobo/edit?html,js,output

答案 2 :(得分:0)

看起来你正在回答你自己的问题。对于时间争论,您应该考虑momentjs,因为它可以更容易地与时间一起工作。写入DOM jQuery始终是一个选项。如果您不想使用库,请尝试:

<div>Your message is <span id="message"></span></div>
<script>
  var textNode = document.createTextNode('text')
  document.getElementById('message').appendNode(textNode)
</script>

但是,如果可能的话,尽量不要在客户端JavaScript中执行此操作。如果您在服务器上呈现此信息,屏幕阅读器和搜索引擎将更容易访问。如果您正在编写静态HTML文件,那么上面的建议应该可以满足您的需求。