Выводить текущую дату по умолчанию на JS?

345
25 ноября 2018, 17:50

Нашел в сети готовый код на JS расчета предполагаемой даты родов. С кодом все ОК, он прост и понятен.

<div class="calculator_table">
  <select id="calc-month">
    <option value="0">January</option>
    <option value="1">February</option>
    <option value="2">March</option>
    <option value="3">April</option>
    <option value="4">May</option>
    <option value="5">June</option>
    <option value="6">July</option>
    <option value="7">August</option>
    <option value="8">September</option>
    <option value="9">October</option>
    <option value="10">November</option>
    <option value="11">December</option>
  </select>
  <select id="calc-day"></select>
  <select id="calc-year"></select>
  <p align="center"><button onclick="calculate();return false;">Calculate</button></p>
  <div id="results"></div>
</div>
<script>
  window.onload = function() 
  {
    for (var y = 2014; y < 2050; y++ )
    {
      document.getElementById('calc-year').innerHTML += '<option value="'+y+'">' + y +'</option>'; 
    }
    for (var d = 1; d <= 31; d++ )
    {
      document.getElementById('calc-day').innerHTML += '<option value="'+d+'">' + d +'</option>'; 
    }
  }
  function calculate()
  {
    var monthNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    var day = Number(document.getElementById('calc-day').value);
    var month = Number(document.getElementById('calc-month').value);
    var year = Number(document.getElementById('calc-year').value);
    var nextday = day + 280;
    var initial = new Date(Date.UTC( year, month, day, 0, 0, 0));
    var predicted = new Date(Date.UTC( year, month, nextday, 0, 0, 0));
    var now = new Date();
    var formated = monthNames[predicted.getMonth()] + ' ' + predicted.getDate() + ', ' + predicted.getFullYear();
    var leftDays =  ( predicted.getTime() - now.getTime() ) / (24*3600*1000); 
    var currentWeeks = (now.getTime() - initial.getTime()) / (7*24*3600*1000)
    document.getElementById('results').innerHTML = '<p>Your estimated due date is ' + formated + '</p><p>Days left to your date: '+ parseInt(leftDays) +'</p><p>Weeks of pregnancy: '+ Math.round(currentWeeks) +'</p>';
  }
</script>

Но т.к. я в JS мало что понимаю, то прошу помощи в двух вещах:

  1. Чтобы по умолчанию у скрипта выводилась текущая дата.
  2. Добавить в результаты Conception Date - выбранная дата + 14 дней.

Очень буду благодарен за помощь.

Answer 1

Ну как то так.

  window.onload = function()  
  { 
    var now = new Date(); 
    var cur_year = now.getFullYear(); 
    for (var y = cur_year-5; y < cur_year+5; y++ ) 
    { 
      document.getElementById('calc-year').innerHTML += '<option value="'+y+'">' + y +'</option>';  
    } 
    document.getElementById('calc-year').selectedIndex = 5; 
     
    document.getElementById('calc-month').selectedIndex = now.getMonth(); 
     
    for (var d = 1; d <= 31; d++ ) 
    { 
      document.getElementById('calc-day').innerHTML += '<option value="'+d+'">' + d +'</option>';  
    } 
    document.getElementById('calc-day').selectedIndex = now.getDate(); 
     
  } 
 
  function calculate() 
  { 
    var monthNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); 
    var day = Number(document.getElementById('calc-day').value); 
    var month = Number(document.getElementById('calc-month').value); 
    var year = Number(document.getElementById('calc-year').value); 
    var nextday = day + 280; 
    var initial = new Date(Date.UTC( year, month, day, 0, 0, 0)); 
    var predicted = new Date(Date.UTC( year, month, nextday, 0, 0, 0)); 
    var conception = new Date(Date.UTC( year, month, day+14, 0, 0, 0)); 
    var now = new Date(); 
 
    var formated = monthNames[predicted.getMonth()] + ' ' + predicted.getDate() + ', ' + predicted.getFullYear(); 
    var formated2 = monthNames[conception.getMonth()] + ' ' + conception.getDate() + ', ' + conception.getFullYear(); 
    var leftDays =  ( predicted.getTime() - now.getTime() ) / (24*3600*1000);  
    var currentWeeks = (now.getTime() - initial.getTime()) / (7*24*3600*1000) 
    document.getElementById('results').innerHTML = '<p>Your estimated due date is ' + formated + '</p><p>Days left to your date: '+ parseInt(leftDays) +'</p><p>Weeks of pregnancy: '+ Math.round(currentWeeks) +'</p><p>Conception date is ' + formated2 + '</p>'; 
     
  }
<div class="calculator_table"> 
  <select id="calc-month"> 
    <option value="0">January</option> 
    <option value="1">February</option> 
    <option value="2">March</option> 
    <option value="3">April</option> 
    <option value="4">May</option> 
    <option value="5">June</option> 
    <option value="6">July</option> 
    <option value="7">August</option> 
    <option value="8">September</option> 
    <option value="9">October</option> 
    <option value="10">November</option> 
    <option value="11">December</option> 
  </select> 
 
  <select id="calc-day"></select> 
  <select id="calc-year"></select> 
 
  <p align="center"><button onclick="calculate();return false;">Calculate</button></p> 
  <div id="results"></div> 
</div>

READ ALSO
Получить из спрайтов *.gif

Получить из спрайтов *.gif

Я новичок в PHP и JSХотел выполнить тривиальную задачу, скачать себе на ПК анимированные стикеры из ВК, думаю, CTRL+SHIFT+U+найти путь до нужной gif и дело...

158
Найти и вырезать элемент

Найти и вырезать элемент

На странице 1 выводится страница 2 в <iframe>

130
Node js express flash-сообщения

Node js express flash-сообщения

Использую в приложении пакеты connect-flash и expressВозможно ли реализовать получение флеш сообщений на стороне клиента без использования шаблонизаторов...

167