Я не уверен, правильно ли я читаю вопрос, извините, если это так.Для меня это звучит так, как будто у вас есть html-элементы, подобные этому:
<input class="gearInput" id ="gearInput0" value="test1">
<input class="gearInput" id ="gearInput1" value="test2">
<input class="gearInput" id ="gearInput2" value="test3">
<button class="someClass" id="0"> </button>
<button class="someClass" id="1"> </button>
<button class="someClass" id="2"> </button>
И вы хотите, чтобы результат этой функции был:
<button class="someClass" id="0"> test1 </button>
<button class="someClass" id="1"> test2 </button>
<button class="someClass" id="2"> test3 </button>
И так далее.Массив spanHtml
бесполезен, так как он всегда содержит только один элемент, поскольку вы очищаете его в каждом блоке цикла.Массив gearNames
также не нужен, если вы не используете его для какой-либо другой функции.
Я бы сделал что-то вроде этого:
gearInputs = document.getElementsByClassName('gearInput');
for (i=0; i < gearInputs.length; i++){
var gearName = gearInputs[i].value,
gearButton = document.getElementById(i);
if(gearName && gearName != ''){
gearButton.innerHTML = '<span class="resultsButtons">' + gearName + '</span>';
}
}
Блок if предназначен только для того, чтобы убедиться, что они вводят значение во вход, и удаляет его, если вас это не волнует.
Вот как бы это выглядело.Надеюсь, это поможет.
https://jsfiddle.net/edh4131/70v551qp/
edit: spacing