Приведённый выше способ не совсем универсальный.
Хотя и абсолютно верный в контексте поставленного вопроса.
Насколько я понимаю, он подходит именно для понедельника, но не для любого нужного дня недели.
Кроме того, он укажет дату именно следующего понедельника, но не ближайшего. А в этом есть разница. И для некоторых случаев она крайне важна.
Поэтому предлагаю альтернативное решение. Возможно, будет полезно:
var date = new Date(),
targetDay = 5, // пятница, начиная с вс=0
targetDate = new Date(),
delta = targetDay - date.getDay();
if (delta >= 0) {targetDate.setDate(date.getDate() + delta)}
else {targetDate.setDate(date.getDate() + 7 + delta)}
alert(targetDate);
Возможно, после вычисления понадобится вывести эту искомую дату русскими словами. Вот один из вариантов:
var targetNumber = targetDate.getDate();
var targetMonth = targetDate.getMonth();
switch(targetMonth) {
case 0: targetMonth = 'января'; break;
case 1: targetMonth = 'февраля'; break;
case 2: targetMonth = 'марта'; break;
case 3: targetMonth = 'апреля'; break;
case 4: targetMonth = 'мая'; break;
case 5: targetMonth = 'июня'; break;
case 6: targetMonth = 'июля'; break;
case 7: targetMonth = 'августа'; break;
case 8: targetMonth = 'сентября'; break;
case 9: targetMonth = 'октября'; break;
case 10: targetMonth = 'ноября'; break;
case 11: targetMonth = 'декабря'; break;
}
var targetYear = targetDate.getFullYear();
alert(targetNumber + ' ' + targetMonth + ' ' + targetYear + ' года');
На практике проверено и работает (
пример).