Interactive Resume Creator JavaScript, HTML, CSS

👤 Sharing: AI
```html
<!DOCTYPE html>
<html>
<head>
<title>Interactive Resume Creator</title>
<style>
body {
  font-family: sans-serif;
  margin: 20px;
}

.container {
  display: flex;
  gap: 20px;
}

.form-section {
  width: 40%;
}

.resume-preview {
  width: 60%;
  border: 1px solid #ccc;
  padding: 20px;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
}

label {
  display: block;
  margin-bottom: 5px;
}

input, textarea {
  width: 100%;
  padding: 8px;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

button {
  background-color: #4CAF50;
  color: white;
  padding: 10px 20px;
  border: none;
  cursor: pointer;
}

button:hover {
  background-color: #3e8e41;
}

h2 {
    margin-top: 20px;
}

ul {
    padding-left: 20px;
}

.hidden {
    display: none;
}
</style>
</head>
<body>

<h1>Interactive Resume Creator</h1>

<div class="container">
  <div class="form-section">
    <h2>Personal Information</h2>
    <label for="name">Name:</label>
    <input type="text" id="name" name="name" oninput="updateResume()">

    <label for="email">Email:</label>
    <input type="email" id="email" name="email" oninput="updateResume()">

    <label for="phone">Phone:</label>
    <input type="tel" id="phone" name="phone" oninput="updateResume()">

    <label for="linkedin">LinkedIn:</label>
    <input type="url" id="linkedin" name="linkedin" oninput="updateResume()">

    <label for="github">GitHub:</label>
    <input type="url" id="github" name="github" oninput="updateResume()">

    <h2>Summary</h2>
    <label for="summary">Summary:</label>
    <textarea id="summary" name="summary" rows="4" oninput="updateResume()"></textarea>

    <h2>Experience</h2>
    <div id="experience-section">
      <button type="button" onclick="addExperience()">Add Experience</button>
    </div>

    <h2>Education</h2>
    <div id="education-section">
      <button type="button" onclick="addEducation()">Add Education</button>
    </div>


    <h2>Skills</h2>
    <div id="skills-section">
        <label for="skills">Skills (comma-separated):</label>
        <input type="text" id="skills" name="skills" oninput="updateResume()">
    </div>
  </div>

  <div class="resume-preview">
    <h2>Resume Preview</h2>
    <div id="resume-name"></div>
    <div id="resume-contact"></div>
    <div id="resume-summary"></div>
    <h2>Experience</h2>
    <div id="resume-experience"></div>
    <h2>Education</h2>
    <div id="resume-education"></div>
    <h2>Skills</h2>
    <div id="resume-skills"></div>
  </div>
</div>

<script>
function updateResume() {
  document.getElementById('resume-name').innerText = document.getElementById('name').value;
  document.getElementById('resume-contact').innerText = `Email: ${document.getElementById('email').value} | Phone: ${document.getElementById('phone').value} | LinkedIn: ${document.getElementById('linkedin').value} | GitHub: ${document.getElementById('github').value}`;
  document.getElementById('resume-summary').innerText = document.getElementById('summary').value;

    // Skills Update
    const skillsInput = document.getElementById('skills').value;
    const skillsArray = skillsInput.split(',').map(skill => skill.trim()).filter(skill => skill !== ''); // Split by comma, trim whitespace, remove empty strings
    let skillsHtml = '<ul>';
    skillsArray.forEach(skill => {
        skillsHtml += `<li>${skill}</li>`;
    });
    skillsHtml += '</ul>';
    document.getElementById('resume-skills').innerHTML = skillsHtml;


  // Update Experience
  const experienceDiv = document.getElementById('resume-experience');
  experienceDiv.innerHTML = ''; // Clear existing experience
  const experienceForms = document.querySelectorAll('.experience-form');
  experienceForms.forEach(form => {
    const title = form.querySelector('.experience-title').value;
    const company = form.querySelector('.experience-company').value;
    const dates = form.querySelector('.experience-dates').value;
    const description = form.querySelector('.experience-description').value;

    if (title && company && dates && description) {
      const experienceHTML = `
        <h3>${title}, ${company}</h3>
        <p>${dates}</p>
        <p>${description}</p>
      `;
      experienceDiv.innerHTML += experienceHTML;
    }
  });

  // Update Education
  const educationDiv = document.getElementById('resume-education');
  educationDiv.innerHTML = ''; // Clear existing education
  const educationForms = document.querySelectorAll('.education-form');
  educationForms.forEach(form => {
    const institution = form.querySelector('.education-institution').value;
    const degree = form.querySelector('.education-degree').value;
    const dates = form.querySelector('.education-dates').value;
    const description = form.querySelector('.education-description').value;


    if (institution && degree && dates && description) {
      const educationHTML = `
        <h3>${degree}, ${institution}</h3>
        <p>${dates}</p>
        <p>${description}</p>
      `;
      educationDiv.innerHTML += educationHTML;
    }
  });


}

function addExperience() {
  const experienceSection = document.getElementById('experience-section');
  const experienceForm = document.createElement('div');
  experienceForm.classList.add('experience-form');
  experienceForm.innerHTML = `
    <label>Title:</label>
    <input type="text" class="experience-title" oninput="updateResume()">
    <label>Company:</label>
    <input type="text" class="experience-company" oninput="updateResume()">
    <label>Dates:</label>
    <input type="text" class="experience-dates" oninput="updateResume()">
    <label>Description:</label>
    <textarea class="experience-description" rows="3" oninput="updateResume()"></textarea>
    <button type="button" onclick="removeExperience(this)">Remove</button>
  `;
  experienceSection.appendChild(experienceForm);
  updateResume();
}

function removeExperience(button) {
  button.parentNode.remove();
  updateResume();
}

function addEducation() {
  const educationSection = document.getElementById('education-section');
  const educationForm = document.createElement('div');
  educationForm.classList.add('education-form');
  educationForm.innerHTML = `
    <label>Institution:</label>
    <input type="text" class="education-institution" oninput="updateResume()">
    <label>Degree:</label>
    <input type="text" class="education-degree" oninput="updateResume()">
    <label>Dates:</label>
    <input type="text" class="education-dates" oninput="updateResume()">
    <label>Description:</label>
    <textarea class="education-description" rows="3" oninput="updateResume()"></textarea>
    <button type="button" onclick="removeEducation(this)">Remove</button>
  `;
  educationSection.appendChild(educationForm);
  updateResume();
}


function removeEducation(button) {
  button.parentNode.remove();
  updateResume();
}
</script>

</body>
</html>
```
👁️ Viewed: 9

Comments