Job Tracker is a responsive web application built using HTML, CSS, and JavaScript.
Users can add new jobs, delete unwanted jobs, view available jobs, and track statistics like total added jobs and total deleted jobs.
This project demonstrates vanilla JS frontend development, interactive UI, and responsive design principles.
-----
----
----
- HTML5
- CSS3
- JavaScript (ES6)
- Font Awesome (for icons)
- Local Storage (for saving jobs)
- Add / Delete Jobs: Users can add new jobs and delete unnecessary ones.
- View Available Jobs: Easily see all active jobs in a clean interface.
- Job Statistics: Track total added and total deleted jobs.
- Responsive Design: Works seamlessly across mobile, tablet, and desktop devices.
- Interactive UI: Buttons, notifications, and dynamic DOM updates using JavaScript.
This project uses only vanilla JS and CSS. Optional dependencies:
- Font Awesome (for icons)
- Google Fonts (for typography)
git clone https://github.com/your-username/job-tracker.gitcd job-trackerSimply double click index.html or use VS Code Live Server extension:
Right click index.html β Open with Live Server- π **Live Site:**https://nowshintisha230.github.io/Job-Tracker/
- π» GitHub Repository: https://github.com/nowshintisha230/job-tracker
Nafisa Nowshin Tisha
Frontend Developer | CSE Student | JavaScript & Web Development Enthusiast
The Differences Between getElementById, getElementsByClassName, and querySelector / querySelectorAll:
- Selects a single element using its unique id.
- Returns only one element object.
- It is the fastest selector because ID is always unique.
- If the ID does not exist, it returns null.
- Selects all elements that have the given class name.
- Returns an HTMLCollection.
- It is a live collection (automatically updates if DOM changes).
- Have to use index number to access specific elements.
- Returns the first matching element.
- Uses any valid CSS selector (id, class, tag, attribute, etc.).
- Returns null if no match is found.
- Returns all matching elements.
- Returns a NodeList.
- It is a static collection(does not update automatically).
The process of create and insert a new element into the DOM:
- First, create a new element using the document object.
- Then, add content (text, attributes, or class) to the element.
- Finally, insert or append the element into a selected parent element in the DOM.
Definition: Event Bubbling is a process where an event starts from the target element and then moves upward through its parent elements in the DOM hierarchy. How it works:
- When an event (like click) happens on a child element, it is triggered first on that element.
- Then the same event moves to its parent element.
- It continues moving upward to ancestors (parent β grandparent β document). So, the event flows from inside to outside (bottom to top).
Definition: Event Delegation is a technique where you attach a single event listener to a parent element instead of adding event listeners to multiple child elements. Why it is useful:
- Improves performance (fewer event listeners).
- Works for dynamically added elements.
- Makes code more clean and manageable.
- Reduces memory usage.
Difference Between preventDefault() and stopPropagation()
- Stops the browserβs default behavior of an element.
- Example: Prevents form submission or stops a link from navigating.
- It does not stop event bubbling.
- Stops the event from bubbling (propagating) to parent elements.
- Prevents parent event handlers from being executed.
- It does not stop the default browser behavior.