Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial<noob />
17,062 PointsSaving the form info after submisson to the server with SessionStorage
Hi! I wanted to see if i can implement this effect with js as well and i successed!
//Save User choices upon errors with SessionStorage
function saveInfo(name) {
//storing the value from the input of the specified input
let store = document.querySelector(`#${name}`).value;
//setting that value in the localstorage
sessionStorage.setItem(name, store);
}
function displayAfter(name) {
//getting the value of the input we stored in saveInfo func and set it to the value of the input after the page loads.
document.querySelector(`#${name}`).value = sessionStorage.getItem(name);
}
function clearAllInputs() {
const allInput = document.querySelectorAll("input");
allInput.forEach(input => {
input.value = "";
})
}
const submitButton = document.querySelector("#submit")
let isClicked = false;
submitButton.addEventListener("click", () => {
isClicked = true;
saveInfo("username");
saveInfo("email");
saveInfo("category");
saveInfo("title");
saveInfo("format");
saveInfo("genre");
saveInfo("year");
saveInfo("details");
});
displayAfter("username");
displayAfter("email");
displayAfter("category");
displayAfter("title");
displayAfter("format");
displayAfter("genre");
displayAfter("year");
displayAfter("details");
if(isClicked) {
setTimeout(() => {
sessionStorage.clear();
clearAllInputs();
},9000)
}
however in this lines:
if(isClicked) {
setTimeout(() => {
sessionStorage.clear();
clearAllInputs();
},9000)
}
I wanted to impement another feature which will clean the inputs and delete the keys from the session storage after a period of time, the logic seem ok but its not working for some reason.
ill be happy if someone can help me :]
2 Answers
Steven Parker
231,110 PointsThe value of "isClicked" will be False until the submit happens, which is long after that test ran. So the "setTimeout" call should be moved into the click handler (and you can eliminate the "if" and the "isClicked" variable).
<noob />
17,062 PointsI did what u said and nothing happens.
const submitButton = document.querySelector("#submit")
submitButton.addEventListener("click", () => {
saveInfo("username");
saveInfo("email");
saveInfo("category");
saveInfo("title");
saveInfo("format");
saveInfo("genre");
saveInfo("year");
saveInfo("details");
setTimeout(() => {
sessionStorage.clear();
clearAllInputs();
},9000)
});
Steven Parker
231,110 PointsThis part looks OK, maybe there's an issue elsewhere, but not all the parts are here. Post a snapshot link to enable replication of your environment.