Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 向表单添加动态数量元素的最佳方法?_Ajax_Xhtml_Forms_Webforms - Fatal编程技术网

Ajax 向表单添加动态数量元素的最佳方法?

Ajax 向表单添加动态数量元素的最佳方法?,ajax,xhtml,forms,webforms,Ajax,Xhtml,Forms,Webforms,我有一个复杂的表单,它有一个静态部分,一个可以有0到多个div,其中包含单选按钮、文本字段和文本区域 我想知道向具有可变表单输入量的部分添加元素的最佳方法是什么。我有一个可行的解决方案,但可能不是最好的: 我使用javascript添加一段html代码,并将其附加到包含可变数量输入字段的div中。在下面的代码示例中,我的javascript代码将执行以下操作 Javascript document.getElementId('dynamic_form_stuff').innerHTML += "

我有一个复杂的表单,它有一个静态部分,一个可以有0到多个div,其中包含单选按钮、文本字段和文本区域

我想知道向具有可变表单输入量的部分添加元素的最佳方法是什么。我有一个可行的解决方案,但可能不是最好的: 我使用javascript添加一段html代码,并将其附加到包含可变数量输入字段的div中。在下面的代码示例中,我的javascript代码将执行以下操作

Javascript

document.getElementId('dynamic_form_stuff').innerHTML += "<div id='element3'>Form stuff</div>";
document.getElementId('dynamic\u form\u stuff').innerHTML+=“form stuff”;
HTML


表单字段
单选按钮之类的东西
文本字段内容
文本区域内容
单选按钮之类的东西
文本字段内容
文本区域内容

我个人会做如下事情:

var elem = document.getElementId('dynamic_form_stuff');
var div = document.createElement('div'); // create element
div.setAttribute('class', 'myclass');  // define attributes
elem.appendChild(div);
// and/or more code.....

这使我能够更好地控制添加属性和样式。

我认为这在很大程度上取决于您在其他地方做了什么,添加了多少项,以及您希望如何添加事件处理程序


如果需要添加事件处理程序,我倾向于使用DOM方法更容易,但是如果您只是使用提交按钮添加表单,那么使用
innerHTML
会更快,如下所示:。

谢谢您的回答!所以我想我正处于那种“如果它没有坏,就不要修理它”的状态?只是看起来不太对劲,很难维护。sAc(如下)所示的解决方案在某种程度上更为简洁,但就像我有许多元素(表格、输入、图像等)一样令人困惑,这些元素将放在div“elements3”中。我有一堆元素要创建和附加,这取决于你是否要添加事件处理程序,或者你希望它以多快的速度呈现。这里有一些取舍。样式应该由css完成,在使用innerHTML时添加css很容易,但增加控件是一件好事,只要您不介意渲染时间更长。
var elem = document.getElementId('dynamic_form_stuff');
var div = document.createElement('div'); // create element
div.setAttribute('class', 'myclass');  // define attributes
elem.appendChild(div);
// and/or more code.....