为已经序列化的表单批量添加input

Cyrus_W 2013-10-09 10:49:50
直接上代码如下,已知formValue是已经序列化的表单数据,有1000个键值对。
var myForm = document.createElement('form');
myForm.setAttribute("action", formAction);
myForm.setAttribute("method", "POST");
myForm.setAttribute("id", "myFormId");
for(var i in formValue) {
var input = formValue[i];
var inputName = input.name;
var inputValue = input.value;
var inputTag = document.createElement('input');
inputTag.setAttribute("type", "hidden");
inputTag.setAttribute("name", inputName);
inputTag.setAttribute("value", inputValue);
myForm.appendChild(inputTag);
}
以上可以为每个键值对添加input,使之成为input元素。但是该循环效率太低,有木有更高效的方法完成这一功能。跪求大神!
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
l676331991 2013-10-09
  • 打赏
  • 举报
回复
我觉得效率问题在于频繁的createElement,这些DOM操作最耗时不过了。 LZ创建这个form,是让用户手动提交的么?如果是js代码提交,可以考虑将用异步请求。 var data = []; for(var i in formValue) { data.push(formValue[i].name+'='+formValue[i].vlaue); } data = data.join('&'); 然后ajax把data send出去,避免频繁crateElement。 ajax回调中将location导航一下,这样和form.submit()区别不是很大。 还有就是,可以考虑只create一个hidden input,然后把formValue组织一下,一起放到这里面。后端根据相应组织结构,把formValue里的值split开,是一个意思的。同样也避免了大量createElement。
Cyrus_W 2013-10-09
  • 打赏
  • 举报
回复
我在这个循环前后加了时间提示,显示完成这个循环要20多秒。。添加组装好html?什么意思,能具体说下么怎么个组装法么?谢谢啦
YuFS 2013-10-09
  • 打赏
  • 举报
回复
cup效率很快的,这个循环效率基本没有影响。 如果一定说要快,可以直接添加组装好的html

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧