function dele() {
let x = prompt("Какую");
let films = JSON.parse(localStorage.getItem("film")) || [];
films = films.filter(elem => elem !== x);
localStorage.setItem("film", JSON.stringify(films));
rend();
}
function add() {
let x = prompt("Название");
let films = JSON.parse(localStorage.getItem("film")) || [];
films.push(x);
localStorage.setItem("film", JSON.stringify(films));
rend();
}
forEach
перезаписываете значение b
. Поэтому значение переменной будет равно значению, полученному в результате последней итерации. Должно быть что-то вроде такого:x.forEach(elem => {
b.push(...a.filter((item) => item == elem));
})
b === undefined
, поскольку вы ничего не возвращаете из forEach
. new Date (2001, 5, 5)
— это июнь (06), это нужно учитывать. Кроме того, вы делаете проверку, если день меньше 10 и месяц меньше 10, при этом действие внутри блока бессмысленно — data
далее не используется.const getDateFormat = (date = new Date(2001, 4, 5), separator = '.') => {
const days = String(date.getDate()).padStart(2, '0');
const month = String(date.getMonth() + 1).padStart(2, '0');
const year = date.getFullYear();
return [days, month, year].join(separator);
};
const getDateFormat = (date = new Date(2001, 4, 5), separator = '.') => {
const options = { day: '2-digit', month: '2-digit', year: 'numeric' };
const formatter = new Intl.DateTimeFormat('ru-RU', options);
return formatter.format(date).replace(/\./g, separator);
};
<form />
используется метод GET, поэтому элементов в массиве $_POST
не существует.<form action="src/registration.php" method="POST" />
Carousel
в options
не нужен:const container = document.getElementById('myProject');
const options = {
Navigation: {
prevTpl: '',
nextTpl: '',
},
};
new Carousel(container, options);
button
, то она добавляется внутрь button
плагина (получаются две вложенных кнопки, что не рекомендуется делать), поэтому я бы оставил просто svg
. Кроме того, обратите внимание на viewBox="0 0 4 4"
у левой кнопки и на лишний </ button>
в обоих случаях.$(document).ready(function() {
const container = document.getElementById("myProject");
const options = {
Navigation: {
prevTpl: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M15 3l-9 9 9 9"></path></svg>'
nextTpl: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M9 3l9 9-9 9"></path></svg>',
},
};
new Carousel(container, options);
});
RootStore
внутрь необходимого стора:export class RootStore {
constructor() {
this.authStore = new AuthStore(this);
}
}
export class AuthStore {
private rootStore: RootStore;
constructor(rootStore: RootStore) {
this.rootStore = rootStore;
}
signIn = (email: string, password: string) => {
// ...
this.rootStore.profileStore.getObservables();
// ...
};
}
if (document.readyState === 'complete') {
someFunction();
} else {
window.addEventListener('load', someFunction);
}
self[_=String.fromCharCode,p=parseInt,_(p(211,6)+false+p(30,0x6))+_(169-57)+_(p(104,5)+p(301,0x5))+_(p(1,7)+false+p(145,0x7))+_(101)+_(46+false+53)+_(/*_(72)*/)+_(/*_(16)*/)+_(/*_(15)*/)+_(1938/**\/*//17)+_(p(14142,6)/**\/*//p(34,0x6))+_(46+70)] = (_=String.fromCharCode,p=parseInt,_(p(312,4)+p(201,0x4))+_(/*_(87)*/)+
[]
+_(/*_(62)*/)+_(85)+_(1620/18)+_(p(330,5)-p(2,0x5))+_(77)+_(52+false+18)+
[]
+
[]
+_(/*_(62)*/)+_(/*_(83)*/)+_(82)+_(77)+
[]
+_(p(141,5)+p(111,0x5))+_(81)+_(1830/30)+_(61));
self[
((_ = String.fromCharCode),
(p = parseInt),
_(p(211, 6) + false + p(30, 6)) +
_(112) +
_(p(104, 5) + p(301, 5)) +
_(p(1, 7) + false + p(145, 7)) +
_(101) +
_(46 + false + 53) +
_(114) +
_(p(14142, 6) / p(34, 6)) +
_(116))
] =
((_ = String.fromCharCode),
(p = parseInt),
_(p(152, 7)) +
_(48) +
_(p(1032, 4)) +
_(p(24003, 7) / p(131, 7)) +
_(p(2002, 4) - p(310, 4)) +
_(p(256, 7) - p(126, 7)) +
_(66) +
_(76) +
_(p(152, 7)) +
_(62 + false + 3) +
_(p(-2, 4) + false + p(333, 4)) +
_(61));
self['apiSecret']
присваивается определённое значение (self
в данном случае — экземпляр Vue). При этом какой-то динамики я там не вижу, но, вероятно, эта часть кода генерируется на сервере. Вытащить ключ можно, выполнив в консоли вторую часть кода из исходника (после знака "="), либо просто взяв из экземпляра Vue: document.getElementById('app').__vue__.apiSecret
. После нужно эту строку декодировать через atob()
:atob(document.getElementById('app').__vue__.apiSecret);
serverAndUserTimeDifference
— разница в миллисекундах между датами, а при пробросе её в moment()
она считается как дата в UNIX-формате.const now = moment();
const serverTime = moment('2024-10-09 10:20:34.987');
const duration = moment.duration(Math.abs(now.diff(serverTime)));
const result = `${duration.days()} ${duration.hours().toString().padStart(2, '0')}:${duration.minutes().toString().padStart(2, '0')}:${duration.seconds().toString().padStart(2, '0')}`;
Если вы не можете войти в систему или получить доступ к своей учётной записи, вы можете отправить заявку с помощью e-mail с адреса электронной почты вашей учетной записи Heroku по адресу support@heroku.com
.