Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Incorrect operation of transferring variable values from one HTML file to another

I have page №1 where I enter text into the form. Then, in the form_check() function, I write to the name variable. After that, I need to open page №2 and output the text with the value of the name variable there. I use localStorage to write the name variable to the name_result key. I switch to another page using window.location.href = 'page2.html' and I call the result() function, in the body of which I get the value from localStorage by key and pass it to HTML via document.getElementById(). But the value of the name variable does not appear on the page №2.

HTML (page №1):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>page1</title>
</head>
<body>
    <form>
        <label>Name:</label>
        <input type="text" id="name">
    </form>
    <button type="button" onclick="form_check()">Submit</button>
    <script src="/script.js"></script>
</body>
</html>

HTML (page №2):

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" src="/style.css">
    <title>page2</title>
</head>
<body>
    <p>The name was introduced: <i id="name_result"></i></p>
    <script src="/script.js"></script>
</body>
</html>

JavaScript:

function result()
{
    console.log(localStorage.name_result);
    document.addEventListener(`DOMContentLoaded`, function() {
        document.getElementById(`name_result`).innerHTML = localStorage.name_result;
    });
}

function form_check()
{
    let name = String(document.getElementById(`name`).value);
    localStorage.setItem(`name_result`, name);
    window.location.href = `page2.html`;
    result();
}

I also tried passing the value of the name variable through the result function argument, but the result is the same.

>Solution :

In you code you are changing location.href on the first page, so result function won’t affect the second page. To fix move your event listener out of the result function, so that it will run on both pages. In the handler of DOMContentLoaded, call the result function if the localStorage value is set:

function result(name) {
    document.getElementById(`name_result`).innerHTML = name;
}

document.addEventListener(`DOMContentLoaded`, function() {
    const nameResult = localStorage.getItem(`name_result`);
    if (nameResult) {
        result(nameResult);
    }
});

function form_check() {
    const name = document.getElementById(`name`).value;
    localStorage.setItem(`name_result`, name);
    window.location.href = `page2.html`;
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading