Отображение дней недели на разных языках, в зависимости от тега опции в HTML

#javascript #html

#javascript #HTML

Вопрос:

Я пытаюсь отобразить в HTML дни недели на разных языках, в зависимости от выбранного языкового параметра, затем нажмите кнопку «Вычислить», должны отображаться дни справа внутри тега label. Но не все идет по плану…

Довольно долго искал это в Интернете, придумал несколько вещей, которые помогли мне, но не совсем на 100%…

 <form style="margin-bottom: 30px;">
    <label>Select language:</label>
    <select class="lang">
       <option value="en">En</option>
       <option value="ro">Ro</option>
       <option value="fr">Fr</option>
    </select>
    <label class="showDays"></label>
    <br>
    <button type="button" onClick="displayLang()">Compute</button>
    <button type="reset" onClick="resetLang()">Reset</button>
</form>



window.displayLang = function()  {

    let date = new Date();
    date.setDate(date.getDate()   7);
    let days = date.getDay();

    let week = [];

    let lang = document.getElementsByClassName("lang")[0].value;
    let allDays = document.getElementsByClassName("showDays");

    if(lang[0].value = "en")    {

        week.push(days);

        allDays[0].innerHTML = week;

    }

    if(lang[0].value = "ro")  {

        week.splice(0, 0, "Luni", "Marti", "Miercuri", "Joi", "Vineri", "Sambata", "Duminica");

        allDays[0].innerHTML = week;

    }

    if(lang[0].value = "fr")    {

        week.splice(0, 0, "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");

        allDays[0].innerHTML = week;

    }

}

window.resetLang = function()    {
    document.getElementsByClassName("showDays")[0].innerHTML = "";
}
  

Очевидно, что если я выберу опцию «En», дни должны отображаться на английском языке, если я выберу опцию «Ro», дни должны отображаться на румынском, если я выберу опцию «Fr», дни должны отображаться на французском. Вместо этого я получаю сейчас: Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche,Luni,Marti,Miercuri,Joi,Vineri,Sambata,Duminica,3 /////
Я просто не понимаю, откуда берется «3»… Я здесь не за цифрами! Также, по-видимому, я мог бы решить эту проблему, используя регистр переключения в JavaScript… Я просто не знаю, как я мог бы это сделать…

Комментарии:

1. let days = date.getDay(); будет установлено days значение числа, следовательно, почему у вас есть это 3 в вашем выводе

2. @messerbill Как я могу отображать дни недели на английском языке, используя метод: let days = date.getDay(); или любые другие встроенные методы JavaScript??

3. посмотрите здесь: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / … но я рекомендую вам использовать moment.js which — гораздо лучшую библиотеку для обработки дат, чем native Date API

Ответ №1:

  1. Вы должны использовать двойное равенство == вместо единицы = в условном if выражении .
  2. Вам также необходимо добавить else оператор.

  3. Вам нужно изменить lang[0].value на lang вместо.

 window.displayLang = function() {
  let date = new Date();
  date.setDate(date.getDate()   7);
  let days = date.getDay();
  let week = [];
  let lang = document.getElementsByClassName("lang")[0].value;
  let allDays = document.getElementsByClassName("showDays");

  if (lang == "en") {
    week = ["Monday", "Tuesday", "Thursday", "Wednesday", "Friday", "Saturday", "Sunday"].join(', ');
    allDays[0].innerHTML = week;
  } else if (lang == "ro") {
    week= ["Luni", "Marti", "Miercuri", "Joi", "Vineri", "Sambata", "Duminica"].join(', ');
    allDays[0].innerHTML = week;
  } else if (lang == "fr") {
    week = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"].join(', ');
    allDays[0].innerHTML = week;
  }
}

window.resetLang = function() {
  document.getElementsByClassName("showDays")[0].innerHTML = "";
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form style="margin-bottom: 30px;">
  <label>Select language:</label>
  <select class="lang">
    <option value="en">En</option>
    <option value="ro">Ro</option>
    <option value="fr">Fr</option>
  </select>
  <br>
  <label class="showDays"></label>
  <br>
  <button type="button" onClick="displayLang()">Compute</button>
  <button type="reset" onClick="resetLang()">Reset</button>
</form>  

Комментарии:

1. Что ж, это работает, как и предполагалось… но вместо дней на английском я просто получаю «3»… Я думал, что: let date = new Date(); date.setDate(date.getDate() 7); let days = date.getDay(); должен был отображать: понедельник, вторник, среда, четверг, пятница, суббота, воскресенье … или, по крайней мере: понедельник, вторник,Ср, Чт, Пт, Сб, Вс … 🙁

2.… Я думал, что: let date = new Date(); date.setDate(date.getDate() 7); let days = date.getDay(); должен был отображать: понедельник, вторник, среда, четверг, пятница, суббота, воскресенье … или, по крайней мере: понедельник, вторник, Ср, Чт, Пт, Сб, Вс… 🙁 Почему вы так думаете ?!! getDay() Метод возвращает день недели (от 0 до 6) для указанной даты.

3. Как мне добавить один пробел после каждого элемента внутри массива?? Например: понедельник, вторник, среда, четверг, пятница, суббота, воскресенье вместо: понедельник, вторник, среда, четверг, пятница, суббота, воскресенье.

4. Рад, что смог помочь.