直接上代码如下,已知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元素。但是该循环效率太低,有木有更高效的方法完成这一功能。跪求大神!
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元素。但是该循环效率太低,有木有更高效的方法完成这一功能。跪求大神!
如果一定说要快,可以直接添加组装好的html
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。