Перебираем предыдущие элементы относительно кликнутого, пока не встретится подходящий:
document.addEventListener('click', ({ target: t }) => {
if (t.matches('.oldValue')) {
let input = t;
while (!(input = input.previousElementSibling).matches('.value')) ;
input.value = t.textContent;
}
});
Или, вычисляем индекс кликнутого среди таких же как он, хватаем инпут с таким же индексом:
const inputs = document.querySelectorAll('.value');
const spans = [...document.querySelectorAll('.oldValue')];
const onClick = ({ target: t }) => inputs[spans.indexOf(t)].value = t.innerText;
spans.forEach(n => n.addEventListener('click', onClick));
Или, добавьте общие обёртки каждой паре input-span, и тогда можно будет подниматься до этой обёртки и искать нужный элемент внутри неё:
document.addEventListener('click', ({ target: t }) => {
if (t.classList.contains('oldValue')) {
t.closest('селектор общей обёртки').querySelector('.value').value = t.innerHTML;
}
});