Например будет рулетка, когда она запускается то идет анимация, как сделать что бы у всех юзеров она была одинаковая,
export class FormValidator {
constructor(config, formElement) {
this._config = config;
this._formElement = formElement;
this._inputList = Array.from(this._formElement.querySelectorAll(this._config.inputSelector));
this._buttonElement = this._formElement.querySelector(this._config.submitButtonSelector);
// проверяем входные данные
this._inputList.forEach((v,i)=>{
if(v === null) console.log('!!!!', i)
})
}
main.js:1 Uncaught TypeError: Cannot read properties of null (reading 'classList')
at e.value (main.js:1)
at main.js:1
at Array.forEach (<anonymous>)
at e.value (main.js:1)
at HTMLElement.<anonymous> (main.js:1)
removeValidationErrors(){
this._inputList.forEach((itemElement) => {
// один из itemElement тут равен null
this._hideInputError(itemElement)
});
}
_hideInputError(inputElement) {
const errorElement = this._formElement.querySelector(`.${inputElement.id}-error`);
inputElement.classList.remove(this._config.inputErrorClass); // ругается на эту строчку
...
const cuefaHash = {
'stone': ['scissors', 'lizard'],
'scissors': ['paper', 'lizard'],
'paper': ['stone', 'spock'],
'lizard': ['paper', 'spock'],
'spock': ['stone', 'scissors'],
};
const helper = {
random(hash) {
const array = Object.keys(hash);
return array[Math.floor(Math.random() * array.length)];
},
compare(item1, item2) {
if(cuefaHash[item1].includes(item2)) return 'Я ПОБЕДИЛ!!!';
if(cuefaHash[item2].includes(item1)) return 'ВЫ ПОБЕДИЛИ !!!';
return 'НИЧЬЯ !!!';
}
};
bot.onText(/(.+)/, function (msg, match) {
console.log('===========================\n', msg,'\n----------------------------\n');
const opts = {
reply_markup: {
inline_keyboard: [
[{text: 'startCuefa', callback_data: 'startCuefa'}],
]
}
};
bot.sendMessage(msg.from.id, 'Original Text', opts);
});
bot.on('callback_query', async (query) => {
const data = query.data
if (data === 'startCuefa') {
await bot.editMessageText(
'Что выбираете?',
{
chat_id: query.message.chat.id,
message_id: query.message.message_id
}
);
await bot.editMessageReplyMarkup(
{
inline_keyboard: [
Object.keys(cuefaHash).map(item=>({text: item, callback_data: item}))
],
},
{
chat_id: query.message.chat.id,
message_id: query.message.message_id
}
);
} else {
const botSelect = helper.random(cuefaHash);
const text = helper.compare(botSelect, data)
await bot.editMessageText(
`Я выбрал ${botSelect}, вы выбрали ${data}, ${text}\n сыграем еще раз?`,
{
chat_id: query.message.chat.id,
message_id: query.message.message_id
}
);
await bot.editMessageReplyMarkup(
{
inline_keyboard: [
[{text: 'startCuefa', callback_data: 'startCuefa'}],
]
},
{
chat_id: query.message.chat.id,
message_id: query.message.message_id
}
);
}
});