Проблема такова, что при крупных введенных (и отправленных) числах бэкенд начинает тормозить и долго отдает результат
var button = $(e.relatedTarget);
h3 = button.parent().find('h3').text() // текст h3
modal.find('h5').text(h3) // текст h5 в модале
document.addEventListener('mouseleave', () => {
const burp = localStorage.getItem('burp')
if(burp !== '100') { alert('эу стой') }
localStorage.setItem('burp', '100')
})
Почему свойству startDataArray передаются аж два значения : data и category? Разве можно свойству обьекта давать два значения? Если да, то зачем в конкретном случае так сделали?
this.setState(
({ searchInput: searchInput, // хз зачем они так написали
startDataArray: data, // в функции будет переменная data которая = this.state.startDataArray
category // более короткая запись чем category: category
}) => {
return {
filteredDataArray: data[category].filter(item => // здесь data это state.startDataArray
item.firstName.toLowerCase().includes(searchInput.toLowerCase())
)
};
}
);
Почему в даном случае в метод filter передали аргументом функцию
fetchData = async () => {
//
this.setState({
startDataArray: data,
category: Object.keys(data)[0]
},
// выполнить this.filter() после того, как стейт заполнится новыми данными
this.filter);
};
filter = () => { // это просто стрелочная функция без аргументов
this.setState(
// берем параметры из стейта, заодно переименовываем startDataArray
({ searchInput: searchInput, startDataArray: data, category }) => {
return {
// возвращаем новое значение стейта
filteredDataArray: data[category].filter(item =>
item.firstName.toLowerCase().includes(searchInput.toLowerCase())
)
};
}
);
};
у меня происходит загрузка и длиться бесконечно
данные не добавляет в бд
document.body.addEventListener('click', e => {
console.log(e.target)
// if (e.target.matches('.dropdown-element') { ... }
})
Есть плагин который реализует dropdown элемент, но мне нужно понять когда был изменен элемент
document.querySelector('form').addEventListener('submit', function(e){
// по умолчанию форма отсылается, но мы хотим ее сначала проверить
e.preventDefault();
if (textone.value == "" || isNaN(textone.value) || texttwo.value == "" || isNaN(texttwo.value)) {
textone.classList.remove("inputone");
texttwo.classList.remove("inputtwo");
textone.classList.add("inputored");
texttwo.classList.add("inputored");
// не ок
return false;
} else {
// вроде ок
}
})
function check(o, params) {
let match = false
Object.entries(o).some(([k, v]) => {
if(Object.entries(params).some(([kk, vv]) => k === k && v === vv)) match = true
})
return match
}
params = { rel: 'shortcut icon' }
o = { rel: 'shortcut icon', type: "image/x-icon" }
check(o, params)
// true
o = { rel: 'stylesheet' }
check(o, params)
// false
let login = document.getElementById('login').value;
let password = document.getElementById('password').value;
const existingUser = users.find(u => u.login === login)
if (!existingUser) {
users.push( { login, password } )
}
for (let i = 0; i <= users.length; i++) {
// цикл выполнится много раз
if (login == users[i].login && password == users[i].password) {
// воу, мы нашли юзера!
alert('ry-ry')
debugger
}else {
// это не юзер, пишем в массив
// а цикл ведь выполнится много раз
users.push(
{
login: document.getElementById('login').value,
password: document.getElementById('password').value
}
)
}
}
document.addEventListener("visibilitychange", function() {
console.log(document.visibilityState)
if (document.visibilityState === 'visible') {
$('.hblock').text('На странице');
} else {
$('.hblock').text('Не на странице');
}
});
countArr.map(itemL => (itemL[1] - itemL[0].length)).map((positiveN, i, arr) => {
if(positiveN < 0) {
return arr[i] = 0;
}
return positiveN;
})
try {
let result = await request()
// ок что дальше?
} catch (oopsError) {
// снова делаю запрос с другими параметрами или обрабатываю капчу
} finally {
// дополнительно этот блок, если что-то должно выполниться в любом случае
}
users.sort((a, b) => a.registration_timestamp - b.registration_timestamp)