簡體   English   中英

使用 JavaScript,如何在頁面重新加載后保持用戶輸入?

[英]Using JavaScript , how do I keep user input on page after it has reloaded?

我使用 HTML 和 JavaScript 允許用戶輸入文本然后推送提交。 當用戶推送提交時,他的文本會顯示在頁面上。 問題是當頁面重新加載時,文本消失了。 明顯地。 這是我的代碼:

 <.DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> </head> <body> <p id="printhere"></p> <TEXTAREA Name="content" ROWS="5" COLS="20" id = "userInput"></TEXTAREA> <button onclick="display()">post</button> <script>function display(){ var post = document.getElementById("userInput");value. document.getElementById("printhere");innerHTML = post; }</script> </body> </html>

使用 JavaScript,一旦頁面重新加載,是否仍然可以保持輸入?

您可以使用存儲 API(sessionStorage、localStorage)來實現相同的目的。 注意:僅存儲不敏感的數據。 切勿將其用於敏感數據。

參考: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

使用 sessionStorage 的示例: https://codepen.io/kishin-karra/pen/zYvgQZZ?editors=1010

示例代碼:

var savedPost = sessionStorage.getItem('text');
document.getElementById("printhere").innerHTML = savedPost;
document.getElementById("userInput").value = savedPost;
function display() {
    var post = document.getElementById("userInput").value;
    document.getElementById("printhere").innerHTML = post;
    sessionStorage.setItem('text', post);
}

輸入文字,點擊發布並刷新

好吧,理想情況下,這個值應該通過 API 來自服務器。 但是,如果您熱衷於使用 JavaScript,您可以考慮localstorage

var post = document.getElementById("userInput").value;
localStorage.setItem("post", post);

document.getElementById("printhere").innerHTML = post || localStorage.getItem("post");
<p id="printhere"></p>
<TEXTAREA Name="content" ROWS="5" COLS="20" id="userInput"></TEXTAREA>
<button  onclick="display()">post</button>  


<script>

    function display(){
        var post = document.getElementById("userInput").value;
        localStorage.setItem('userInputValue',post);
    }
    window.addEventListener('load',()=>{
        var savedUserData = localStorage.getItem('userInputValue');
        document.getElementById("printhere").innerHTML = savedUserData;
    });

</script>

編輯多個輸入:

<p id="printhere"></p>
<TEXTAREA Name="content" ROWS="5" COLS="20" id="userInput"></TEXTAREA>
<button  onclick="display()">post</button>  


<script>

    var num = 0;
    function display(){
        var post = document.getElementById("userInput").value;
        localStorage.setItem(num,post);
        var savedUserData = localStorage.getItem(num);
        document.getElementById("printhere").innerHTML += savedUserData+'<br>';
        num++;
    }

    window.addEventListener('load',()=>{
        if (localStorage.length !== null) {
            for(var i = 0; i < localStorage.length; i++){
                var savedUserData = localStorage.getItem(i);
                document.getElementById("printhere").innerHTML += savedUserData+'<br>';
            }
        }

    });

</script>

我認為您可以像這樣使用preventDefault

function display(event){
event.preventDefault()

var post = document.getElementById("userInput").value;
document.getElementById("printhere").innerHTML = post;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM