На странице три независимых блока. Если отчёт недоступен, имя пользователя и настройки всё ещё можно показать. Как дождаться всех результатов и понять, какой блок упал? async function loadDashboard() { const results = await Promise.allSettled([ Promise.resolve('Профиль'), Promise.reject(new Error('Отчёт недоступен')), Promise.resolve('Настройки'), ]); for (const result of results) { if (result.status === 'fulfilled') console.log(result.value); else console.log(result...
Вячеслав Сухинин Личный Блог
Куда пропадают поля формы при сборе FormData
В форме видны имя, почта и тема оформления. Ты создаёшь FormData и обнаруживаешь, что пришло только одно поле. Посмотри на разметку и попробуй найти обе причины. <form id="settings"> <input name="name" value="Саша"> <input id="email" value="a@example.test"> <input name="theme" value="dark" disabled> </form> const form = document.querySelector('#settings'); console.log([...
Как выбрать «товар», «товара» или «товаров» без цепочки if
В корзине легко написать «1 товар» и «2 товара». Как только появляются 11 и 21, проверка последней цифры начинает подводить. const rules = new Intl.PluralRules('ru'); const forms = { one: 'товар', few: 'товара', many: 'товаров', other: 'товара' }; for (const count of [1, 2, 5, 11, 21, 22]) { console.log(count, forms[rules.select(count)]); } 1 товар 2...
Почему две колонки Grid с 1fr получаются разной ширины
Ты ставишь две колонки 1fr и ждёшь ровного деления. Потом в левую карточку попадает длинный идентификатор, и правая колонка сжимается. <div class="grid"><div>СверхдлинныйИдентификаторБезПробелов</div><div>Справа</div></div> .grid { display: grid; width: 240px; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); }. grid > div { overflow-wrap: anywhere; } В записи 1fr у трека есть автоматический минимум...

