簡體   English   中英

為什么我的Cookie不會將值寫到input(javascript)中?

[英]Why my cookie doesn't write down a value into input(javascript)?

我制作cookie,希望將其值記入輸入中。 我成功制作了cookie,但是無法執行第二步。 什么問題? 請解釋我的錯誤,以使我知道將來如何處理! 謝謝。

  var init = function () { var time = new Date(); time.setMonth(time.getMonth() +1); var cookieVal = document.getElementById("first").value; document.cookie = "first" + "=" + cookieVal + ";path=/;expires=" + time.toGMTString(); valArray = document.cookie.split(";"); return valArray[1]; } document.getElementById("done").onclick = init; document.getElementById('first').value = init(); 
  <form> <input type="text" id="first" placeholder="Введите имя"> <input type="button" id="done" value="Готово!"> </form> 

您的代碼看起來像(寫的一樣)正在運行,並且在done頁面加載之前獲得done按鈕和第first文本框。

通過重新組織代碼以使用適當的事件處理,此代碼可以工作:

 var txtFirst = null, btnDone = null; window.addEventListener("DOMContentLoaded", function(){ txtFirst = document.getElementById("first"); btnDone = document.getElementById("done"); btnDone.addEventListener("click", init); }); function init() { var time = new Date(); time.setMonth(time.getMonth() +1); var cookieVal = txtFirst.value; document.cookie = "first=" + cookieVal + ";path=/;expires=" + time.toGMTString(); valArray = document.cookie.split(";"); txtFirst.value = valArray[1]; } 
 <form> <input type="text" id="first" placeholder="Введите имя"> <input type="button" id="done" value="Готово!"> </form> 

當然,讓用戶在您要輸入姓名的同一個框中鍵入姓名似乎無效,因此,我認為您需要這樣的內容:

 var txtFirst = null, btnDone = null; window.addEventListener("DOMContentLoaded", function(){ txtFirst = document.getElementById("first"); btnDone = document.getElementById("done"); btnDone.addEventListener("click", setCookie); if(document.cookie){ getCookie(); } }); function setCookie() { var time = new Date(); time.setMonth(time.getMonth() +1); var cookieVal = txtFirst.value; document.cookie = "first=" + cookieVal + ";path=/;expires=" + time.toGMTString(); } function getCookie() { txtFirst.value = document.cookie.split(";")[1]; } 
 <form> <input type="text" id="first" placeholder="Введите имя"> <input type="button" id="done" value="Готово!"> </form> 

好吧,我在您的代碼中看到了幾個錯誤:

  1. 當您啟動頁面時,調用init() ,您的輸入為空,但您將其空值保存到cookie中,刪除了先前的值
  2. 我不確定為什么要使用valArray[1] ,如果要檢索第一個值,它應該是: valArray[0]

我建議您有兩個單獨的功能,一個用於設置cookie,另一個用於檢索該值:

 var setvalue = function() { var time = new Date(); time.setMonth(time.getMonth() +1); var cookieVal = document.getElementById("first").value; document.cookie = "first" + "=" + cookieVal + ";path=/;expires=" + time.toGMTString(); } var getvalue = function() { valArray = document.cookie.split(";"); return valArray[0]; } document.addEventListener("DOMContentLoaded", function() { document.getElementById("done").onclick = setvalue; document.getElementById('first').value = getvalue(); }) 
 <form> <input type="text" id="first" placeholder="Введите имя"> <input type="button" id="done" value="Готово!"> </form> 

暫無
暫無

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

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