#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 — гораздо лучшую библиотеку для обработки дат, чем nativeDate API
Ответ №1:
- Вы должны использовать двойное равенство
==
вместо единицы=
в условномif
выражении . -
Вам также необходимо добавить
else
оператор. -
Вам нужно изменить
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. Рад, что смог помочь.