169 похожих чатов

Всем привет, подскажите пожалуйста, вроде простая задачка, но уже второй

день сижу...

На странице 5 чекбоксов, по умолчанию они все checked="checked", при клике на любой из чекбоксов, нужно снять checked у всех пяти.

Могу найти в цикле текущей чекбокс, но как найти все остальные?

for (let i = 0; i < mainCheckbox.length; i++) {
mainCheckbox[i].onclick = function () {
mainCheckbox[i].checked = this.checked;
}
}

26 ответов

8 просмотров

Тебе нужно сначала пойти по всем и убрать ччекед а потом конкретному добавить :)

Игорь- Автор вопроса
Андрей
Тебе нужно сначала пойти по всем и убрать ччекед а...

Привет! Все чекеды должны быть всегда в одинаковых состояниях, по умолчанию они checked="checked", кликая на любой их них, все становятся not:checked и наоборот

Игорь
Привет! Все чекеды должны быть всегда в одинаковых...

то есть, один чекбокс как бы управляет всеми остальными?

Игорь- Автор вопроса
Andrew
то есть, один чекбокс как бы управляет всеми остал...

да, именно так, понимаю, что бредово, но так надо сделать

Игорь
да, именно так, понимаю, что бредово, но так надо ...

делегируй клик на контейнер, после проверка e.target.type==='checkbox', внутри берешь значение e.target.checked и через квериселекторАлл и форич ставишь checked в значение из события

Игорь
Привет! Все чекеды должны быть всегда в одинаковых...

Ну так еще проще, перебираешь все чекеды и убираешь добавляешь состояние

Андрей
Ну так еще проще, перебираешь все чекеды и убираеш...

Неверное добавлю немного инфы, добавь класс на каждый с них, и перебирай массив чекбоксов

Андрей
Неверное добавлю немного инфы, добавь класс на каж...

Скинь кодепен не понятно в чем проблема:)

Игорь
Привет! Все чекеды должны быть всегда в одинаковых...

Если в реакте делать, то вот так это будет работать: const example = () => { const [isChecked, setIsChecked] = useState(true) ; const handleChange = () => setIsChecked(!isChecked) ; return <> <checkbox ischecked={isChecked} onChange={handleChange} /> И так 5 чекбоксов <\> }

Александр Крючков
Можешь объяснить почему?)

Стейт нужно менять иммутабельно, чтобы у реакта было что сравнить и правильно перерендерится

Denis Utkin
Стейт нужно менять иммутабельно, чтобы у реакта бы...

Как я написал тоже правильно перерендерится 🤷‍♂

Документацию ведь не дурак придумал. Во избежание ошибок, которые у тебя появятся вообще в другом уголке проекта, но которые появятся именно из-за такого сета, оно того не стоит

Александр Крючков
Как я написал тоже правильно перерендерится 🤷‍♂

В этом случае правильно, в более сложных не правильно, будешь экспериментировать?

Aleksey Kulikov
Документацию ведь не дурак придумал. Во избежание ...

Парни, вы мне на документацию жалость не давите, пожалуйста. У меня в проектах спокойно работают варианты как я написал выше. Был бы благодарен если бы объяснили в какой момент при моëм написании может появиться ошибка или не надо поправлять если не владеете предметом 🤗

Александр Крючков
Парни, вы мне на документацию жалость не давите, п...

Ты понимаешь, что конкретных ситуаций никто не знает, так как твоя реализация вызывает так званное "непредвиденное поведение", именно поэтому никто тебе реальных примеров не даст

Александр Крючков
Парни, вы мне на документацию жалость не давите, п...

Тк хендлер не заколбечен может быть ошибка при его передаче дочерним компонентам

Aleksey Kulikov
Ты понимаешь, что конкретных ситуаций никто не зна...

Изменение стейта напрямую вызывает непредвиденное поведение, а не мой вариант.

Иван Музыка
screenshot

машинный перевод: Однако после одного клика age будет только 43, а не 45! Это связано с тем, что вызов функции set не обновляет переменную состояния age в уже запущенном коде. Таким образом, каждый вызов setAge(age + 1) становится setAge(43). Чтобы решить эту проблему, вы можете передать функцию обновления в setAge вместо следующего состояния:

Иван Музыка
screenshot

Ну, правильно. У меня только один set.. , который просто переключает состояние. Короче, парни. Всë что вы пишете - правильно, молодцы. Но и в моëм варианте ошибки нет. В данном примере. И в другой компонент можно передать, без useCallback иди с ним отработает как нужно. Да в более сложных ситуациях соглашусь, иногда требуется писать prev => ...

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
кто шарит: mattermost отслеживает что ты на пк запускаешь?
Valentin
13
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
5
Карта сайта