2014-02-13 64 views
0

我刪除存儲在簡單的存儲陣列中的主要元素script.This中創建簡單的存儲空元素array.So我運行一個腳本到一個新的數組返回主插件腳本(不包含空元素),並將其分配給簡單存儲數組。但主腳本只獲取一個元素而不是整個數組。如何獲得整個陣列?下面 是主要的插件代碼的一部分:陣列冒落主插件腳本

text_entry.port.on("del", function (todel) { 
    console.log(todel); 
    site_l=ss.storage.sites.length; 

    for(var i=0;i<site_l;i++) 
    { 
    if(ss.storage.sites[i]==todel) 
    { 
     delete ss.storage.sites[i]; 
    } 
    } 
    text_entry.port.emit("c",ss.storage.sites); 
    text_entry.port.on("cd",function(arr){ 
    ss.storage.sites=[]; 
    ss.storage.sites=arr; 
    }); 

}); 

腳本,它返回一個包含新數組沒有空元素:

self.port.on("c",function(arr) 
{ 
    var a=arr; 
    var l=a.length; 

    function isEmpty(element) { 
    if(element!=null) 
     return true; 
    } 

    a=a.filter(isEmpty); 
    self.port.emit("cd",a); 
}); 
+0

這很難說你在做什麼在這裏 - text_entry是一個頁面-MOD實例,還是什麼?你能提供一個簡化的例子,人們可以自行運行和測試嗎? – canuckistani

+0

如果你有一個非sdk版本,我可以幫你。你可以做一個簡單的測試用例,我可以爲你製作一個演示插件。 – Noitidart

+0

@canuckistani它的面板實例。用戶從列表中的項目在面板和點擊刪除按鈕,這使得面板內容腳本獲取並存儲在本地array.And從列表中選擇的項目現在需要的是陣列發送到主script.I找到一種方法。數組轉換爲字符串,並將它傳遞給主腳本,並使用分離,使其數組。 – Ram

回答

1

更換

for(var i=0;i<site_l;i++) { 
    if(ss.storage.sites[i]==todel) { 
    delete ss.storage.sites[i]; 
    } 
} 

隨着ss.storage.sites.splice(ss.storage.sites.indexOf(todel), 1)