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

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

день сижу...

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

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

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

26 ответов

44 просмотра

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

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

Привет! Все чекеды должны быть всегда в одинаковых состояниях, по умолчанию они 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 => ...

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта