2016-06-10 172 views
-1

我想清空全局聲明的JavaScript數組。這裏是我的代碼 - >Javascript數組不全空聲明全局

var arr = []; 
var store = []; 
var result_count = ''; 
var result = ''; 
var store_count = ''; 

$('select').on('change', function() { 
    arr.push(this.value); 
    var record_count = arr.length; 
    for (var i = 0; i < record_count; i++) { 
     store[i] = arr[i].split("-"); 
    } 
    store_count = store.length; 
}); 

$("#save_seting_permission").click(function() { 
    $.ajax({ 
     type: 'post', 
     dataType: 'JSON', 
     url: base_url + "admin/permission_submit", 
     data: { 
      result: JSON.stringify(store), 
      result_count: store_count 
     }, 
     success: function(result) { 
      /* while(store.length > 0) 
      { 
       store.pop(); 

      } */ 
      store.length = 0; 
      //console.log(store); 
     }, 
    }); 
}); 

陣列名爲全局聲明。我正在推送下拉變化事件的值,&向ajax提交的數據庫發送值&清除(清空)數組。下一次當我向數組推送值時,舊值仍然存在於數組中(儘管我已經在ajax成功中清除了它)。

回答

1

爲什麼你不使用這個?

store = []; 

這清空數組毫無疑問。這是一個新的空數組的分配,而不是修改舊的數組。

在這裏你有一個如何清空數組的方法列表 - How do I empty an array in JavaScript?。儘管您提供的解決方案是有效的,但我沒有看到它不應該起作用的任何原因。

0

成功回調之後ü可以只guive新的價值,你的陣列:

success: function(result) { store = [];} 
+0

是的,我已經試過謂也。數組正在清除Ajax成功,但值仍然在onchange。數組範圍有問題嗎? –

+0

我想你也需要清空arr,因爲store的值來自這裏:arr = [] – splifo