2016-10-21 46 views
0

當我點擊按鈕的拳頭時,保存在cookie中的形式如下:如果我沒有刷新網頁,cookie爲什麼會再次保存json?

1=[{"name":"1","num":"1","classAge":"1","score":"1"}]; 

,然後我設置輸入的值作爲「」來清除。 但如果我填不F5形式清新的網頁,我將之前保存的數據再次保存:

2=[{"name":"1","num":"1","classAge":"1","score":"1"},{"name":"2","num":"2","classAge":"2","score":"2"}]; 

而且我不知道why.The代碼如下所列。

oSubmit.addEventListener("click",function(e){ 
     oEvent = e||event; 
     oEvent.preventDefault(); 
     iNum = oInput[1].value; 
     var stu = new Object;       
     stu = student(oInput[0].value,oInput[1].value,oInput[2].value,oInput[3].value); 
     console.log(typeof stu); 
     array1.push(stu);      
     sJson = JSON.stringify(array1);    
     alert("OK!"); 
     for (var i=0;i<oInput.length;i++) {   
      oInput[i].value=""; 
     } 
     setCookie(iNum,sJson,7); 
     console.log(document.cookie); 
    }) 
+0

這個學生功能是做什麼的?請確保包含您的所有代碼。 –

+0

顯示的代碼永遠不會重置'array1'變量,所以是的,每次調用函數時,您都將添加到已經存在於該數組中的任何內容,然後將整個內容保存在cookie中。您可以在函數中添加'var array1 = []',但如果您只想保存當前值,則根本不需要數組,只需保存'JSON.stringify(stu)'即可。順便說一句,你不需要'oEvent = e ||事件;'如果你使用'.addEventListener()','stu = new Object;'是多餘的,因爲你立即覆蓋下一行的那個值。 – nnnnnn

+0

@nnnnnn是的,它是array1造成的麻煩。謝謝〜 – legend

回答

0

我已經形成了基於由NNNNNN的評論和假設console.logalert是用於調試的答案。 (如果不是,我不可能想象它是)

oSubmit.addEventListener("click", function(e) { 
    e.preventDefault(); 
    var studentResult = student(oInput[0].value, oInput[1].value, oInput[2].value, oInput[3].value); 
    setCookie(oInput[1].value, JSON.stringify([studentResult]), 7); 

    for (var i = 0; i < oInput.length; i++) { 
     oInput[i].value = ""; 
    } 
}) 

我也想借此機會向您提供有關允許其他程序員瞭解您的代碼更好一些建議。

  • 不可能確定甚至半準確地猜測函數student的功能。 「學生」是一個名詞,如果你在它前面放上一個動詞,它會變得更加清晰(getStudent,或諸如此類)
  • 不可能確定什麼是oInput。什麼是「o」?
  • 您正在使用的變量(可能/有希望)在所示範圍之外聲明,沒有這些信息,關於如何解決您的問題的任何建議都是猜測。

我希望你會考慮這些建議。

相關問題