Задача №2
Дано 5 елементів input. При введенні значення у якийсь із них необхідно автоматично заповнювати інші (усі попередні у спадному порядку (кожен попередній має значення на 1 менше за наступний)), усі наступні на 1 більше (кожен наступне на 1 більше за попереднього).
Рішення:
'use strict'
/**
* @param {Event} e
*/
function handleInputCascade({target, currentTarget}) {
if (!(target instanceof HTMLInputElement)) return
const targetValue = parseFloat(target.value)
if (!isFinite(targetValue)) return
/** @type {NodeListOf<HTMLInputElement>} */
const relativeInputs = currentTarget.querySelectorAll('input')
const targetIndex = [].indexOf.call(relativeInputs, target)
// update previous
let previousValue = targetValue
for (let i = targetIndex - 1; i >= 0; i--) {
relativeInputs[i].value = String(--previousValue)
}
// update next
let nextValue = targetValue
for (let i = targetIndex + 1; i < relativeInputs.length; i++) {
relativeInputs[i].value = String(++nextValue)
}
}
const formEl = document.querySelector('.js-form')
formEl?.addEventListener('input', handleInputCascade)
