В Javascript, если оператор if ничего не возвращает, то ничего не делает - PullRequest
0 голосов
/ 01 марта 2019

У меня есть календарь на моей веб-странице, и этот скрипт добавит класс, если день в задании совпадает с текущим днем.Эта работа, если у меня есть какие-либо задачи в этот текущий день.Но если я этого не сделаю, это даст мне ошибку в этом текущем скрипте и во всех других скриптах на моей веб-странице, делая веб-страницу бесполезной.Итак, вопрос в том, как сделать этот скрипт просто игнорирующим и ничего не делающим, если оператор 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 голосов
/ 01 марта 2019

Мне кажется, что если вы измените строку # 6 кода JS на day = '0' + day;, то у вас не возникнет проблем.Переменная dd, которую вы используете, не инициализируется в области.

0 голосов
/ 01 марта 2019

Вам просто нужно проверить длину дочерних элементов, прежде чем пытаться получить доступ к дочернему элементу [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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...