Ввод значений в динамически генерируемые типы ввода с помощью JavaScript

У меня есть входы типа Range/Number, которые синхронизированы и динамически генерируют поля ввода так же, как и их значения.

Затем у меня есть кнопка, которая заполнит сгенерированные поля ввода произвольным значением.

Каждое из динамически сгенерированных полей ввода имеет уникальные идентификаторы, но функция document.getElementById() не может найти ни один из идентификаторов и возвращает значение null.

Есть ли способ изменить значение сгенерированных полей в функции randomizeItemTypes()?

function randomizeItemTypes(textbox) {
  var rackNum = textbox.replace("itemSlider", "").replace("numOfTypes", "");
  var numOfTypes = document.getElementById("numOfTypes1").value;
  for (var i = 0; i < numOfTypes; i++) {
    document.getElementById("rack" + rackNum + "." + i).value = 4;
  }
}

Следующая ссылка — это CodePen для моего кода: http://codepen.io/cnc4ever/pen/LGNMEp

Спасибо, парни!


person Howard Yang    schedule 19.12.2015    source источник
comment
к вашему сведению, иметь точки в идентификаторе - не очень хорошая идея. в какой-то момент вы, вероятно, будете использовать селекторы для сопоставления элементов (например, jquery или document.querySelector), и тогда вам нужно будет избежать этих точек   -  person ThiefMaster    schedule 19.12.2015
comment
Попробуй это; function randomizeItemTypes (textbox) { var RackNum = textbox.replace (randomize1, 1); var numOfTypes = document.getElementById(numOfTypes1).value; for (var i = 0; i ‹ numOfTypes; i++) { document.getElementById(rack + RackNum + . + i).value = 4; } }   -  person yjs    schedule 19.12.2015
comment
вау вау вау... я не верю в то, что только что сделал... какая глупая ошибка. Я новичок в HTML, поэтому я просто предположил, что динамически генерируемые объекты работают по-другому, мой плохой! спасибо, что указали на это! Я также приму к сведению наличие точек в идентификаторе!   -  person Howard Yang    schedule 19.12.2015


Ответы (2)


Ваш rackNum дает некоторую строку вместо чисел Ваш идентификатор для текстового поля что-то вроде rack1.0 , rack1.1 вместо этого используйте document.getElementById("rack1" + "." + i).value = 4;

person neetesh    schedule 19.12.2015
comment
Я понял, что это была такая нубская ошибка .. спасибо, что указали на это! совсем мой плохой.. - person Howard Yang; 19.12.2015

person    schedule
comment
Не нужно создавать так много функций для достижения простых вещей. пожалуйста, дайте мне знать, если это использование для вас. - person manoj shukla; 19.12.2015
comment
Я акцентировал внимание на вставке значения в поля ввода, но это была простая ошибка с моей стороны. Спасибо, в любом случае! - person Howard Yang; 19.12.2015
comment
мой код делает то, чего вы хотите достичь с помощью своего кода? - person manoj shukla; 19.12.2015
comment
Часть рандомизации да, но я создал другие функции, чтобы иметь больше полей ввода. Попробуйте изменить значение первого поля ввода. - person Howard Yang; 19.12.2015