Мне нужна помощь в правильном извлечении «значений», введенных в «текстовое поле», которое было динамически создано на основе желаемого пользовательского ввода. Моя проблема прямо сейчас - моя кнопка «print usr» не вызывает функцию для печати значений, введенных в текстовые поля. Я не получаю никаких ошибок в консоли, поэтому я полностью озадачен тем, почему он не работает.Как извлечь текстовое значение из динамически созданных текстовых полей ввода через кнопку в JavaScript?
Я бы очень признателен за помощь в этом вопросе, полностью измените код или просто скажите, что я делаю неправильно и как его исправить!
Вот общее представление о том, как он в настоящее время работает с графическим интерфейсом с моим HTML и JS код:
HTML:
<html>
<head>
<script src="elemCreator.js"></script>
</head>
<body>
<b>Input # of users:</b>
<form id="usr_form" name="usr_form" method="get" action="mainmenu.html" onsubmit="elemCreator.createUserEntry(document.usr_form.usr_num.value);return false;">
<input type="text" name="usr_num">
<input type="submit" value="Submit">
</form>
</body>
</html>
JavaScript:
function elementCreator() {
this.usrList = [];
}
var elemCreator = new elementCreator();
elementCreator.prototype.createUserEntry = function (usr_num) {
for (i = 0; i < usr_num; i++) {
document.body.innerHTML += '<b>User #' + (i + 1) + ': </b><br>';
this.usrList[i] = document.createElement("INPUT");
this.usrList[i].setAttribute("type","text");
document.body.appendChild(this.usrList[i]);
document.body.appendChild(document.createElement("br"));
document.body.appendChild(document.createElement("br"));
}
document.body.innerHTML += '<form onsubmit="elemCreator.printUsrs(usr_num); return false;">';
document.body.innerHTML += '<input type="submit" value="Print User Names">';
document.body.innerHTML += '</form>';
}
//Using this function below just to see whether or not the text values are being saved to the array
elementCreator.prototype.printUsrs = function (usr_num) {
for (i = 0; i < usr_num; i++) {
document.body.innerHTML += '<br>' + this.usrList[i].value;
}
}
Мой текущий HTML-код:
Текущий HTML-интерфейс работает, но кнопка внизу не работает.
Поэтапное добавление разметки к документу - не очень хорошая идея, особенно когда вы добавляете закрывающие теги в отдельной операции в соответствующий тег открытия. Объедините разметку в одну строку и запишите ее сразу, убедившись, что она действительная разметка сама по себе. – RobG
Каково значение для * usr_num *, которое передается * printUsrs *? Кажется, не определено, поэтому цикл не зацикливается. – RobG
@RobG дает два замечательных подсказки относительно того, почему этот код не работает, но также, вероятно, пора научиться использовать jQuery или шаблонный инструмент, например Handlebars (или, возможно, React). Подобная прямая манипуляция DOM, как известно, трудно получить, особенно в кросс-платформенном виде. – smarx