在Javascript中,如果if语句不返回任何内容,则什么也不做

时间:2019-02-28 23:35:17

标签: javascript if-statement

我的网页上有一个日历,如果任务中的日期与当前日期匹配,此脚本将添加一个类。如果我当天有任何工作,这项工作。但是,如果我不这样做,它将在此当前脚本以及我网页上的所有其他脚本上给我一个错误,从而使网页无用。所以问题是,如果if语句不返回任何内容,我该如何使该脚本忽略而不执行任何操作?

var d = new Date(2019, 1, 24);
var month = d.getMonth() + 1; //.getMonth() is 0-11
var day = d.getDate();

if (day < 10) {
  day = '0' + dd;
}

if (month < 10) {
  month = '0' + month;
}

 var mydivs = document.getElementsByClassName("mydiv");
 for(var i = 0; i < mydivs.length; i++) {
     if (mydivs[i].children[0].innerHTML == `${day}.${month}`) {
        mydivs[i].className += " today";
     }
 }
.today {
  border: 2px solid red;
  color: red;
}
<div class="mydiv">
    <span class="date-display-single day" property="dc:date" datatype="xsd:dateTime" content="2019-02-24T11:30:00+01:00">24.02</span>
</div>

<div class="mydiv">
    <span class="date-display-single day" property="dc:date" datatype="xsd:dateTime" content="2019-02-25T11:30:00+01:00">25.02</span>
</div>

2 个答案:

答案 0 :(得分:1)

您只需要在尝试访问[0]子级之前对子级进行长度检查,否则您将获得索引超出范围的错误。

var d = new Date(2019, 1, 24);
var month = d.getMonth() + 1; //.getMonth() is 0-11
var day = d.getDate();

if (day < 10) {
  day = '0' + dd;
}

if (month < 10) {
  month = '0' + month;
}

 var mydivs = document.getElementsByClassName("mydiv");
 for(var i = 0; i < mydivs.length; i++) {
     if (mydivs[i].children.length && mydivs[i].children[0].innerHTML == `${day}.${month}`) {
        mydivs[i].className += " today";
     }
 }
.today {
  border: 2px solid red;
  color: red;
}
<div class="mydiv">
</div>

<div class="mydiv">
    <span class="date-display-single day" property="dc:date" datatype="xsd:dateTime" content="2019-02-24T11:30:00+01:00">24.02</span>
</div>

<div class="mydiv">
    <span class="date-display-single day" property="dc:date" datatype="xsd:dateTime" content="2019-02-25T11:30:00+01:00">25.02</span>
</div>

答案 1 :(得分:0)

在我看来,如果将JS代码的第6行更改为day = '0' + day;,那么您将没有问题。您使用的变量dd未在范围中初始化。