Я пытаюсь получить тот день - Javascript - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть скрипт, который находит тот день, дату и год.Но через два дня он должен сказать «Я закрыт» ниже дня ... эти два дня - «Сондаг» и «Онсдаг». Я пытался сделать заявление if, но, похоже, это не сработало: (

HTML

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>JS - Testing</title>
  </head>
  <body>
    <b id="calendar-day"></b> -
    <b id="calendar-date"></b>
    <b id="calendar-month-year"></b>
    <p></p>
  </body>
  <script src="main.js"></script>
</html>

JS

//function that gets the day and date
function calendar() {
    var day = ['Søndag', 'Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'];
    var month = ['Januar','Febuar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'];
    var d = new Date();
    setText('calendar-day', day[d.getDay()]);
    setText('calendar-date', d.getDate());
    setText('calendar-month-year', month[d.getMonth()]+' '+(1900+d.getYear()));
    checkDay();
};

//function that sees if it's closing day
var paragraph = document.querySelector('p');

function checkDay() {
  if (day == 'Onsdag') {
    paragraph.innerText = 'I am closed';
  }
}

function setText(id, val){
    if(val < 10){
        val = '0' + val;    //add leading 0 if val < 10
    }
    document.getElementById(id).innerHTML = val;
};

window.onload = calendar;

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Я прошел день в checkDay:

//function that gets the day and date

function calendar() {
    var day = ['Søndag', 'Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'];
    var month = ['Januar','Febuar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'];
    var d = new Date();
    setText('calendar-day', day[d.getDay()]);
    desiredDay = day[d.getDay()];
    setText('calendar-date', d.getDate());
    setText('calendar-month-year', month[d.getMonth()]+' '+(1900+d.getYear()));
    checkDay(desiredDay);
};

//function that sees if it's closing day
var paragraph = document.querySelector('p');

function checkDay(day) {
  if (day == 'Onsdag') {
    paragraph.innerText = 'I am closed';
  }
}

function setText(id, val){
    if(val < 10){
        val = '0' + val;    //add leading 0 if val < 10
    }
    document.getElementById(id).innerHTML = val;
};

window.onload = calendar;
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>JS - Testing</title>
  </head>
  <body>
    <b id="calendar-day"></b> -
    <b id="calendar-date"></b>
    <b id="calendar-month-year"></b>
    <p></p>
  </body>
  <script src="main.js"></script>
</html>

день не определен в функции checkDay

0 голосов
/ 19 сентября 2018

Самое ценное качество для разработчика - лень .Не тратьте время в камышах :-) Используйте объект Date для манипулирования датами, и в наши дни действительно нет оправдания тому, что вы не используете Vue, когда хотите манипулировать DOM.

Чтобы получитьпо датским будням используйте myDate.toLocaleDateString('da-DK',{weekday:'long'}).То же самое касается названий месяцев.Документы: здесь .

Чтобы узнать, выходной ли день, используйте (myDate.getDay() === 6) || (myDate.getDay() === 0);

Вот ваш пример работы с 13 строками сценария и 6 строкамиразметки.

var vm = new Vue({
  el : "#vueRoot",
  data : { myDate : new Date() },
  computed : {
    formattedDate(){
     return this.myDate.toLocaleDateString(
      'da-DK',
      {weekday:'long', day:'numeric', month:'long', year:'numeric'}
     );
    },
    isOpen(){return !(this.myDate.getDay() === 3 || this.myDate.getDay() === 0)}
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="vueRoot">
  <b>{{formattedDate}}</b>
  <br>
  {{isOpen?'I am OPEN':'I am CLOSED'}}
</div>
0 голосов
/ 19 сентября 2018

Вероятно, вы пытаетесь это сделать.Вы не можете напрямую получить доступ к day в функцию checkDay, вам нужно передать ее в качестве параметра, а затем.Во-вторых, вы не можете напрямую извлечь значение из дня, потому что это массив, а не целое число или строка, поэтому вам нужно перебрать массив, чтобы найти правильное значение

function calendar() {
    var day = ['Søndag', 'Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'];
    var month = ['Januar','Febuar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'];
    var d = new Date();
    var today = day[d.getDay()];
    setText('calendar-day', today);
    setText('calendar-date', d.getDate());
    setText('calendar-month-year', month[d.getMonth()]+' '+(1900+d.getYear()));
    checkDay(today);
};

//function that sees if it's closing day
var paragraph = document.querySelector('p');

function checkDay(day) {
  if (day == 'Onsdag' || day == 'Søndag') {
      paragraph.innerText = 'I am closed';
    } else paragraph.innerText = 'I am opened';
 
}

function setText(id, val){
    if(val < 10){
        val = '0' + val;    //add leading 0 if val < 10
    }
    document.getElementById(id).innerHTML = val;
};

window.onload = calendar;
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>JS - Testing</title>
  </head>
  <body>
    <b id="calendar-day"></b> -
    <b id="calendar-date"></b>
    <b id="calendar-month-year"></b>
    <p></p>
  </body>
  <script src="main.js"></script>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...