简历生成器

基本信息

个人简介

工作经历

添加工作经历

教育背景

添加教育经历

专业技能

预览

在左侧填写信息,预览将实时更新

"; if (resumeData.name) htmlContent += "

" + escapeHtml(resumeData.name) + "

"; if (resumeData.title) htmlContent += '

' + escapeHtml(resumeData.title) + "

"; const contactParts = []; if (resumeData.email) contactParts.push(escapeHtml(resumeData.email)); if (resumeData.phone) contactParts.push(escapeHtml(resumeData.phone)); if (resumeData.location) contactParts.push(escapeHtml(resumeData.location)); if (contactParts.length > 0) { htmlContent += '

' + contactParts.join(" | ") + "

"; } if (resumeData.summary) { htmlContent += '
个人简介

' + escapeHtml(resumeData.summary) + "

"; } if (resumeData.experiences.length > 0) { htmlContent += '
工作经历
'; resumeData.experiences.forEach((exp) => { htmlContent += '
'; htmlContent += "

" + escapeHtml(exp.position) + "

"; htmlContent += '
' + escapeHtml(exp.company) + " | " + formatDate(exp.start) + " - " + (exp.end === "至今" ? "至今" : formatDate(exp.end)) + "
"; htmlContent += "

" + escapeHtml(exp.description) + "

"; htmlContent += "
"; }); htmlContent += "
"; } if (resumeData.education.length > 0) { htmlContent += '
教育背景
'; resumeData.education.forEach((edu) => { htmlContent += '
'; htmlContent += "

" + escapeHtml(edu.school) + "

"; htmlContent += '
' + escapeHtml(edu.degree) + " - " + escapeHtml(edu.major) + " | " + formatDate(edu.date) + "
"; htmlContent += "
"; }); htmlContent += "
"; } if (resumeData.skills.length > 0) { htmlContent += '
专业技能
'; resumeData.skills.forEach((skill) => { htmlContent += '' + escapeHtml(skill) + ""; }); htmlContent += "
"; } htmlContent += ""; const blob = new Blob([htmlContent], { type: "text/html" }); const url = URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = (resumeData.name || "简历") + ".html"; a.click(); URL.revokeObjectURL(url); }); // 保存数据 document.getElementById("saveDataBtn").addEventListener("click", function () { localStorage.setItem("resumeData", JSON.stringify(resumeData)); alert("数据已保存到本地"); }); // 加载数据 document.getElementById("loadDataBtn").addEventListener("click", function () { const saved = localStorage.getItem("resumeData"); if (saved) { resumeData = JSON.parse(saved); document.getElementById("name").value = resumeData.name || ""; document.getElementById("title").value = resumeData.title || ""; document.getElementById("email").value = resumeData.email || ""; document.getElementById("phone").value = resumeData.phone || ""; document.getElementById("location").value = resumeData.location || ""; document.getElementById("summary").value = resumeData.summary || ""; document.getElementById("skills").value = resumeData.skills ? resumeData.skills.join(", ") : ""; renderExperienceList(); renderEducationList(); updatePreview(); alert("数据已加载"); } else { alert("没有找到保存的数据"); } }); // 页面加载时尝试加载数据 window.addEventListener("load", () => { const saved = localStorage.getItem("resumeData"); if (saved) { resumeData = JSON.parse(saved); document.getElementById("name").value = resumeData.name || ""; document.getElementById("title").value = resumeData.title || ""; document.getElementById("email").value = resumeData.email || ""; document.getElementById("phone").value = resumeData.phone || ""; document.getElementById("location").value = resumeData.location || ""; document.getElementById("summary").value = resumeData.summary || ""; document.getElementById("skills").value = resumeData.skills ? resumeData.skills.join(", ") : ""; renderExperienceList(); renderEducationList(); updatePreview(); } }); // Theme toggle function toggleTheme() { const html = document.documentElement; const currentTheme = html.getAttribute("data-theme"); const newTheme = currentTheme === "light" ? "dark" : "light"; html.setAttribute("data-theme", newTheme); document.getElementById("theme-icon").textContent = newTheme === "light" ? "☀️" : "🌙"; localStorage.setItem("theme", newTheme); }