• Теория
  • Теория

Сравниваем onchange и oninput

Мы научились изменять размер текста в статье, когда пользователь передвигает ползунок. Но пользоваться нашей настройкой неудобно, потому что текст изменяется слишком резко. Это происходит потому, что обработчик событий onchange срабатывает только тогда, когда пользователь отпускает ползунок. В итоге текст меняется один раз, скачком.

Чтобы текст изменялся более плавно, нужно менять размер шрифта много раз, но по чуть-чуть. Для этого надо получать новое значение при каждом изменении положения ползунка. С этим нам поможет обработчик событий oninput. Мы уже работали с ним в одной из прошлых частей.

Разберём, в чём разница между двумя обработчиками:

  • onchange срабатывает, если значение поля ввода изменилось и пользователь закончил ввод. Например, если пользователь передвинул ползунок и отпустил его. Или ввёл что-то в текстовое поле и убрал из него курсор.
  • oninput срабатывает на каждое изменение значения, независимо от того, завершил пользователь ввод или нет. Например, он сработает на каждое изменение положения ползунка, даже если пользователь продолжает его двигать. И на каждый новый символ в текстовом поле, даже если пользователь продолжает вводить текст.

Сделаем настройку размера текста удобнее. Для этого заменим обработчик onchange на oninput. После этого убедимся, что текст в статье изменяется без скачков.

Когда мы меняем размер элементов, браузеру приходится перерисовывать страницу. Это трудоёмкая операция, и лучше выполнять её как можно реже. Используйте обработчик oninput с осторожностью.

О том, как браузер обрабатывает различные изменения и анимации, вы можете узнать из этой статьи.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Динамические стили элементов» тренажёра «Знакомство с JavaScript» можно после регистрации и оформления подписки.