我的网页上有一个日历,如果任务中的日期与当前日期匹配,此脚本将添加一个类。如果我当天有任何工作,这项工作。但是,如果我不这样做,它将在此当前脚本以及我网页上的所有其他脚本上给我一个错误,从而使网页无用。所以问题是,如果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>
答案 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
未在范围中初始化。