<form id="f1">
<input type="text"><input type="text"><input type="text"><textarea></textarea><select></select></form><button οnclick="alert(getHtml(true,'f1'))">获取表单innerHTML</button><button οnclick="setHTML(false,"f1")">设置div的innerHTML,不做处理</button><button οnclick="setHTML(true,"f1")">设置div的innerHTML,处理数据并且设置状态</button><div id="dv"></div><script> function setHTML(process,formID) { $('#dv').html(getHtml(process, formID)); if (!window.ActiveXObject && process) { //处理标准浏览器下select对象的option选择问题 var arr, selector = '', i; $('#dv option[selectedx]').each(function () { $(this).attr('selected', true).removeAttr('selectedx'); }); //textarea有value属性没用,不会显示在输入框内,需要用js设置过value属性一次 $('#dv textarea').each(function () { $(this).val(this.getAttribute('value')); }); } } function getHtml(process,formID) { if (window.ActiveXObject || !process) { return $("#" + formID).html(); } else {//标准浏览器,需要重新控件的value属性,要不返回容器的innerHTML输入的内容或者选择状态并不会通过innerHTML属性获取到 $($("#" + formID)[0].elements).each(function () { switch (this.tagName) { case 'INPUT': case 'TEXTAREA': switch (this.type) { case 'radio': case 'checkbox': if (this.checked) this.setAttribute('checked', true); else this.removeAttribute('checked'); //要记得删除,要不默认的选择会随innerHTML一起返回 break; default: this.setAttribute('value', this.value); } break; case 'SELECT': $('option', this).removeAttr('selectedx').not(':selected').removeAttr('selected').end().filter(':selected').attr('selectedx', 'selected'); break; } }); return $("#" + formID).html(); } }</script>