Я очень плохо знаком с javascripts и пытаюсь создать динамическую HTML-форму, где есть несколько кнопок, и каждая кнопка кликает карту к соответствующей форме ввода. Вот мой код:
<html>
<head>
<title>Create Group</title>
<script src="/js/jquery-3.4.1.min.js"></script>
<script>
$(document).ready(function(){
$("#generate_form").click(function(){
var number = document.getElementById("number_of_groups").value;
var container = document.getElementById("container");
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
var i;
for (i=1;i<=number;i++){
var p = document.createElement("p");
var node = document.createTextNode("group " + i + " :");
p.appendChild(node);
container.appendChild(p);
var input = document.createElement("input");
input.type = "text";
var thisID = 'group_'+i;
input.id = thisID;
input.name=thisID;
container.appendChild(input);
var button = document.createElement("button");
button.id = "button_"+i;
button.type = "button";
container.appendChild(button);
button.onclick = function(){ document.getElementById(thisID).value = "hello world";};
var buttonLabel = document.createTextNode("Generate");
button.appendChild(buttonLabel);
container.appendChild(document.createElement("br"));
}
})
});
</script>
</head>
<body>
<h2>Create some group(s)</h2>
<br>
Create <input type="text" id="number_of_groups" name="number_of_groups" value="1"> group(s).
<button id="generate_form" type="button">GO</button>
<div id="container"/>
</body>
</html>`
Таким образом, пользователь вводит количество групп для создания и нажимает кнопку «Перейти», затем код должен динамически генерировать форму с номером, выбранным пользователем. Каждая группа формы включает в себя текстовое поле ввода и кнопку «Создать». Когда кнопка нажата, текстовое поле ввода покажет «Привет мир». Однако «Привет мир» отображается только в последнем текстовом поле ввода независимо от того, какую кнопку «Создать» я нажимаю. Таким образом, я изменил функцию нажатия кнопки на:
button.onclick = function(){ alert(thisID);};
Затем я обнаружил, что thisID
всегда является идентификатором последнего текстового поля ввода независимо от того, какую кнопку «Создать» я нажимаю. Я предполагаю, что это связано с тем, что привязка события click не происходит до тех пор, пока сценарий не будет выполнен, когда «thisID» всегда будет иметь последнее значение.
Кто-нибудь может помочь мне реализовать желаемую функциональность? Большое спасибо!