toString()
прекрасно сделает работёнку: (
"\u042d\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u0442\u043e\u0440\u044b \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0444\u0438\u0433\u043d\u0451\u0439 \u0437\u0432\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0431\u043e\u0433 \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c"
).toString() // "Это текст которы ..."
1000
и 1e3
и 0x3E8
,const alpha = 'abcdefghijklmnopqrstuvwxyz'.split(''); // массив ["a", ... "z"]
'pavel'.toLowerCase().split('').map((c) => alpha.indexOf(c))
// [ 15, 0, 21, 4, 11 ]
a..z
то можно использовать UTF таблицу, где латиница с маленькой буквы начинается с 97 (совпадает с ASCII):'pavel'.toLowerCase().split('').map((c) => c.charCodeAt(0) - 97)
// [ 15, 0, 21, 4, 11 ]
let isActive = false;
– флаг состояния: активно или нет. Как сейчас у вас наличие/отсутствие слушателя.false
, input или focus – ставить true
.innerHTML = Math.round()
сейчас дважды. Достаточно явно вызвать функцию.README.md
с инструкцией по развёртыванию? Прямо копировать запущенный проект с VPS'ки — затея так-себе./var/lib/docker
// a и b взаимно обменялись значениями:
[ a, b ] = [ b, a ];
const arr = [1, 2, 3, 4, 5];
[arr[0], arr[4]] = [arr[4], arr[0]];
arr // [5, 2, 3, 4, 1]
initialCards.forEach(item => {
// создать карточку
const element = makeElementFromItem(item);
// установить эту карточку куда-то в DOM-дереве
document.body.appendChild(element);
});
Вам осталось реализовать функцию makeElementFromItem()
— но там в начале у вас уже есть все эти createElement()
– думаю, вы справитесь. '0.0000001024'.replace(/^0?\.?0*/, '') // получится строка "1024"
0.0000001024
после преобразования toString()
мы увидим "1.024e-7"const selectTrack = new Promise(resolve => {
document.querySelectorAll('.chartsCard')
.forEach(el => el.addEventListener('click', () => resolve(el.dataset.musicid)));
});
selectTrack.then(track => {
// тут что-то сделать с выбранным треком
console.log('выбранный трек', track);
});
const diffHours = Math.ceil((endDate - startDate) / 36e5); // точно в бОльшую сторону округлять?
const days = Math.floor(diffHours / 24);
const hours = diffHours - days * 24;
console.log(`Срок аренды: ${days} дней и ${hours} часов`);
D = new Date();
D.setHours(D.getHours() + 12) // подвинули вперёд на 12 часов
даты корректируются «автомагически».(
(start, finish) => {
const date = new Date(start);
const dateFinish = new Date(finish);
const result = [];
while (date <= dateFinish) {
result.push(date.toISOString());
date.setHours(date.getHours() + 12);
}
return result;
}
)('2020-01-01T00:00:00+03:00', '2020-03-15T11:58:01+03:00')
/*
Array(149) [ "2019-12-31T21:00:00.000Z", "2020-01-01T09:00:00.000Z", "2020-01-01T21:00:00.000Z", "2020-01-02T09:00:00.000Z", "2020-01-02T21:00:00.000Z", "2020-01-03T09:00:00.000Z", "2020-01-03T21:00:00.000Z", "2020-01-04T09:00:00.000Z", "2020-01-04T21:00:00.000Z", "2020-01-05T09:00:00.000Z", … ]
*/
element.hasAttribute('maxlength')
element.setAttribute('maxlength', 20)
document.querySelectorAll('input[type=password]')
forEach()
maxlength
;