直接代码
function from(form: string | HTMLFormElement, data: { [key: string]: any }) { let target: Element | null; if (form instanceof Element) { target = form; } else { target = document.getElementById(form); } if (target) { const names = Object.keys(data); for (let i = 0; i < names.length; i++) { const name = names[i]; const els = target.querySelectorAll(`[name=${name}]`); for (let j = 0; j < els.length; j++) { const el = els[j]; if (el) { const elName = el.tagName; if ("INPUT" === elName) { const type = el.getAttribute("type") || ""; if (["checkbox", "radio"].includes(type)) { (el as HTMLInputElement).checked = Boolean(data[name]); (el as HTMLInputElement).value = String(Boolean(data[name])) } else { (el as HTMLInputElement).value = data[name] } } else if ("SELECT" === elName) { (el as HTMLSelectElement).value = data[name] } } } } } }