('0' + date.getMonth()).slice(-2)
// или
`${date.getMonth()}`.padStart(2, 0)
date.toLocaleDateString('ru-RU').split('.').reverse().join('.')
// или
date.toLocaleDateString('ru-RU').replace(/(\d+)(\.\d+\.)(\d+)/, '$3$2$1')
this.props.options
return X; // тут НУЖНО ...
return new Promise(resolve => {
const img = new Image();
img.onload = () => resolve(true);
img.onerror = () => resolve(false);
img.src = 'тут ссылка на изображение';
});
document.querySelector('.menu').addEventListener('click', ({ target: t }) => {
if (t.tagName === 'A') {
const submenu = [...t.parentNode.children].find(n => n.classList.contains('sub-menu'));
if (submenu) {
submenu.classList.toggle('red');
}
}
});
for (const n of document.querySelectorAll('.menu a')) {
n.addEventListener('click', onClick);
}
function onClick() {
this.nextElementSibling?.classList.toggle('red');
}
// или
document.querySelectorAll('.sub-menu').forEach(function(n) {
n.previousElementSibling.addEventListener('click', this);
}, e => e.target.nextElementSibling.classList.toggle('red'));
data-target="#id-следующего-collapse-блока"
и data-toggle="collapse"
.Авторы вопросов не всегда помечают решения среди всех полученных ответов. Поэтому мы решили позволить сообществу самостоятельно выбирать ответы, которые решают поставленный автором вопрос. С этого дня мы добавляем пользовательское голосование за ответы. Те, у кого вклад более 10, смогут голосовать за ответ и помечать его как решение.
Если в течение недели ответ получает 3 и более голосов, он становятся решением. Автор такого ответа получает 10 очков вклада (или 1 единицу), как если бы этот ответ выбрал автор вопроса или куратор.
Object.values(arr.reduce((acc, [ id, group, ...values ]) => {
const g = (acc[id] = acc[id] ?? { id, groups: {} }).groups;
(g[group] = g[group] ?? []).push(values);
return acc;
}, {}))
const delay = timeout => new Promise(r => setTimeout(r, timeout));
async function asyncDelayedForEach(arr, callback, timeout) {
for (let i = 0; i < arr.length; i++) {
await callback.call(arr, arr[i], i, arr);
await delay(timeout);
}
}
// или
const asyncDelayedForEach = (arr, callback, timeout) =>
arr.reduce((acc, n, i, a) => acc
.then(() => callback.call(a, n, i, a))
.then(() => delay(timeout))
, Promise.resolve());
@click="selectCity"
selectCity(e, { cityCode, storeId, name }) {
$event
):@click="selectCity(city)"
selectCity({ cityCode, storeId, name }) {
...
Object.values(arr.reduce((acc, [ user, ...data ]) => {
(acc[user] = acc[user] ?? { user, data: [] }).data.push(data);
return acc;
}, {}))
document.querySelector('.todo-app__list').addEventListener('click', e => {
const li = e.target.closest('.todo-app__list-item');
if (li) {
console.log(li.dataset.id);
}
});