2015-11-12 53 views
1

所以我有這個問題。我有一個Javascript對象,通過var stack = {}創建。在該項目中,該對象用於存儲數組。單擊添加按鈕時,將使用鍵將數組添加到對象。關鍵是在HTML輸入字段中輸入的值。添加的按鈕可以按用戶的需求多次點擊。點擊提交按鈕後,數據將通過ajax發送至php。成功退回stack已清除並且文檔已準備好再次使用。下面的函數是實現的示例代碼。刪除值後重新使用JavaScript對象

Add.js

function add(stack){ 
     ... 
     var arr = ['apple','oranges']; 
     stack[someName] = arr; 
} 

Submit.js

function submit(stack){ 
     $.ajax({ 
      type: "POST", 
      url: "somefile.php", 
      success: function(html){ 
       //some event 
       ... 
       //remove elements in stack 
       stack = {}; 
      } 
     }); 
} 

Main.js

var stack = {}; 
$('#addButtonId').on('click',function(){ 
    add(stack); 
} 
$('#sumbitButtonId').on('click',function(){ 
    submit(stack); 
} 

的問題是,一旦按下提交按鈕,對象被清除。對象stack將不再保存任何新數組,如果addButton被再次點擊。有人可以向我解釋發生了什麼事嗎?我在某處讀到了清除對象obj = {}留下垃圾。但我不完全確定它是什麼意思,或者如果它涉及我的問題。

在此先感謝!

+0

從你顯示的代碼工作正常:http://jsfiddle.net/uayu70dd –

回答

0

你可以試試這個。

for (var member in stack) { 
    delete stack[member]; 
} 
stack = {}

,你只需將它設置爲一個新的空對象,而不是清理掉它的內容。儘管出於所有意圖和目的,這應該工作得很好,所以我不確定錯誤是否在您認爲正在發生的地方。

+0

它不是一個數組,它是一個包含數組的對象。他只是使用括號符號。 – Prefix

+0

即,'stack = {'a':[1,2,3],'b':[4,5,6]};' – Prefix

+0

啊,那傢伙刪了他的評論,好像我在跟自己說話。 ;) – Prefix