如何使用 JavaScript 动态创建表单
概要
可以通过使用一些文档对象模型 (DOM) 方法(例如 createElement()、setAttribute()、appendChild() 来创建完全动态的 HTML 表单。这些 DOM 方法将帮助我们构建动态 HTML 表单。我们构建此动态表单的方法是:在脚本标记中创建所有元素,设置属性以添加一些功能,最后在我们的元素准备好提供服务后,我们将在元素的父元素中附加它。因此,附加在父表单标记内的所有元素都是子元素。
语法
此任务中使用的语法为 −
createElement() 方法用于创建任何 HTML 元素。例如:div、button、p、label 等。
document.createElement(elements);
setAttribute() 方法用于在元素中插入属性。setAttribute() 方法内的值作为键值对传递。例如:(“placeholder”,”Name”), (“type”,”submit”), (“value”,“submit”) 等。
element.setAttribute(“Key”,“Value”);
appendChild() 方法将我们使用 createElement() 创建的元素插入到任何主体标签中。直接元素的元素引用将作为参数传给 appendChild()。
parentElement.appendChild(element);
算法
步骤 1 − 在编辑器上创建一个简单的 HTML 主旨代码。此外,创建一个按钮和一个表单标签,我们的动态表单将加载其中。
步骤 2 − 在脚本标签内创建一个 javascript 箭头函数。
步骤 3 − 现在使用 document.getElementById() 获取变量中的表单,因为表单标签由 ID 名称定义。
步骤 4 − 从此处开始构建您的动态表单。使用 document 的 createElement() 方法创建一个新元素。
var userName = document.createElement("input");
步骤 5 − 现在使用 setAttribute() 方法在上述创建的元素中设置属性。
userName.setAttribute("placeholder", "Name");
步骤 6 − 使用 appendChild() 方法将上述创建的元素追加到父元素中,即 id 名称“dform”的“表单”。
dform.appendChild(userName);
步骤 7 − 重复步骤 4 - 步骤 6,并创建表单所需的所有字段。
步骤 8 − 使用 createElement() 创建另一个元素 div,另外分别创建两个按钮提交和重置,并在其中追加这两个按钮。
步骤 9 −单击“生成表单”按钮,它将触发“gForm()”函数,并将动态生成表单。
示例
在给定的示例中,我们使用 Javascript 构建了一个表单。因此,表单标签内的任何元素都不会像使用主体标签内的元素一样构建为静态元素。该表单包含学生注册的某些字段。这些字段为姓名、电子邮件、地址、出生日期、电话号码,因此所有这些都从脚本标签中动态呈现。
<html> <head> <title>Create form dynamically with js</title> </head> <body style="height: 90vh; width: 50%;display:flex;flex-direction: column;place-content: center; margin: auto;"> <p style="margin: 0 auto;">*Student registration form</p> <button style="margin: 0.5rem auto;width: 10rem;" onclick="gForm()"> Generate Form </button> <form id="dynamicForm"> </form> <script> gForm = () => { var dform = document.getElementById("dynamicForm"); dform.setAttribute("style", "display:flex;flex-direction:column") // dform.innerHTML="" var userName = document.createElement("input"); userName.setAttribute("placeholder", "Name"); dform.appendChild(userName); var userEmail = document.createElement("input"); userEmail.setAttribute("placeholder", "Email"); userEmail.setAttribute("type", "email"); dform.appendChild(userEmail); var userAdd = document.createElement("input"); userAdd.setAttribute("placeholder", "Address"); dform.appendChild(userAdd); var userDob = document.createElement("input"); userDob.setAttribute("placeholder", "D.O.B"); userDob.setAttribute("type", "date"); dform.appendChild(userDob); var userPhn = document.createElement("input"); userPhn.setAttribute("placeholder", "Phone number"); dform.appendChild(userPhn); var sBtn = document.createElement("input"); sBtn.setAttribute("value", "submit"); sBtn.setAttribute("type", "submit"); var rBtn = document.createElement("input"); rBtn.setAttribute("value", "reset"); rBtn.setAttribute("type", "reset"); var btns = document.createElement("div"); btns.setAttribute("style","margin:0.4rem auto") dform.appendChild(btns); btns.appendChild(sBtn); btns.appendChild(rBtn); } </script> </body> </html>
在下面给出的图像中,它显示了上述示例的输出,显示了学生注册表单生成器按钮。在未单击生成表单按钮时,它会显示一个简单的页面,如下所示。
在单击上述“生成表单”按钮时,会触发脚本标签内创建的箭头函数,结果显示了一个动态生成的表单,其中包含学生注册所需的所有字段。
结论
通过完成此任务,我们可以在网页中创建任何动态元素。网页中的动态内容使页面加载快速,因为在页面加载时服务器不必一开始就响应整个冗余代码。动态表单也使页面更具交互性。