Как отобразить сегодняшнюю дату, используя массивы JavaScript и getDate? - PullRequest
0 голосов
/ 31 марта 2019

Мне не удалось отобразить дату в следующем формате:

"Сегодня Пятница , 29-й день июня в году 2019 ."

Я использую JavaScript в документе HTML5. Я предоставил свой код и ценю любую помощь. Я не хочу использовать какую-либо стороннюю библиотеку для этого, кроме того, что можно сделать с помощью базового уровня JavaScript.

<script type="text/javascript">
  <!--

  var monthName = new Array();
  monthName[0] = "January";
  monthName[1] = "February";
  monthName[2] = "March";
  monthName[3] = "April";
  monthName[4] = "May";
  monthName[5] = "June";
  monthName[6] = "July";
  monthName[7] = "August";
  monthName[8] = "September";
  monthName[9] = "October";
  monthName[10] = "November";
  monthName[11] = "December";

  var myYear = today.getFullYear();
  var myDate = today.getDate();

  var dayExt = "th";

  if ((myDate == 1) || (myDate == 21) || (myDate == 31)) dayExt = "st";
  if ((myDate == 2) || (myDate == 22)) dayExt = "nd";
  if ((myDate == 3) || (myDate == 23)) dayExt = "rd";

  var extDate = myDate + dayExt;

  document.write(extDate + "Today is the day of ");
  document.write(monthName[today.getMonth()] + " in the year ");
  document.write(myYear + ".");

  // -->
</script>

Текущий результат: Ничего

Ожидаемый результат: Сегодня воскресенье, 31 марта 2019 года.

1 Ответ

1 голос
/ 01 апреля 2019

Вот один из способов сделать это.Сама задача довольно проста - обратите внимание на

  1. способ создания и инициализации массивов
  2. способы проверки нескольких условий
  3. способ созданиястрока с использованием шаблонной записи - знак доллара, фигурная левая фигурная скобка, выражение, фигурная правая фигурная скобка - ${expression_goes_here}
  4. метод размещения содержимого на странице, не разрушая ничего, что уже присутствует.document.write все еще дает многим из нас кошмары!
  5. метод ожидания, пока вся страница не загрузится и станет доступным для JS, прежде чем вы попытаетесь запустить любой код, который ищет или изменяет содержимое, которое, как ожидается, будет присутствовать.

"use strict";
window.addEventListener('load', function()
{
	var monthNames = ['January','Febuary','March','April','May','June','July','August','September','October','November','December'];
	var dayNames = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
	var today = new Date();
	
	var dayName = dayNames[today.getDay()];
	var monthName = monthNames[today.getMonth()];
	var dayOfMonth = today.getDate();
	
	var ext = dayOfMonth % 10;		// extract last (least significant) digit
	switch (ext)
	{
		case 1: 	ext = "st"; break;
		case 2: 	ext = "nd"; break;
		case 3: 	ext = "rd"; break;
		default:	ext = "th"; break;
	}
	
	var text = `Today is ${dayName}, the ${today.getDate()}${ext} day of ${monthName} in the year ${today.getFullYear()}`;
	var textElem = document.createTextNode(text);
	document.body.appendChild(textElem);
}, false );
  1. Вы можете создать массив со всеми данными в нем.Вам не нужно создавать пустой массив, прежде чем кропотливо вставлять каждый из элементов по одному.
  2. Вы должны исследовать оператор switch.
  3. Использование шаблонной записи может сделать вещи чище, поскольку вы можете избежать закрытия строки, добавления некоторого значения к ней перед добавлением новой строки в конец - вы просто разграничиваете переменные и т. д., причем ${}
  4. document.write всегда используется для (и я могу 'не надо проверять!) будет немного грубо, так как первое использование на странице приведет к удалению и удалению любого контента, уже отправленного в браузер (скрипты, стили и т. д., и т. д.). Лучшее решение - создать элемент HTML некоторогоописание, установите содержимое этого элемента перед добавлением этого элемента на страницу.Я использовал текстовый узел, который в некоторой степени эквивалентен «безэлементному» - текст не будет заключен в угловые скобки и тег html.
  5. Вы можете заметить, что весь код заключен в скобки,Я сказал браузеру, что когда запускается событие, которое сигнализирует о том, что все элементы html были прочитаны, проанализированы и доступны для взаимодействия, я хотел бы получить уведомление.

Вот форма:

window.addEventListener('load', callThisFuncWhenLoadEventReceived, false);

Я мог бы указать имя функции, которая будет вызываться в ответ на это событие, ИЛИ я мог бы сделать, как я сделал здесь, и использовать функцию без имени(анонимная функция)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...