尝试使用chrome.stoarge.sync存储数组但没有成功

时间:2016-10-18 14:08:20

标签: javascript arrays google-chrome google-chrome-extension

好的,所以我会做一个大的刷新:

这是我的清单:

{
"manifest_version": 2,
"name": "OnlineShoppingManager",
"version": "1.0",
"description": "The extension shows you how much you spend on online shopping",
"icons": {
    "128": "icon128.png",
    "48": "icon48.png",
    "16": "icon16.png"
    },
"browser_action":{
    "default_icon": "icon16.png",
    "default_popup": "popup.html"
},

"options_page" : "options.html",

"background":{
    "scripts":["eventPage.js"],
    "persistent": false 

},
"permissions": [
    "storage",
    "notifications",
    "contextMenus"
]

}
我的全部js: 简短的解释:在这部分中我初始化一个空数组。

$(function(){
var boole=0;
var b=0;
    $('#enter').click(function(){

        if (boole==0){
        $("#enterS").show();
        boole=1;
        b=1;
        }
        if(b==1)
        {var purchases = [];
            chrome.storage.sync.set({purchases:[]});}
        else{
            $("#enterS").hide();
            boole=0;    
            $('#Amount').val('');
            $('#ProductName').val('');
            $('#Date').val('');
            }       

});

}); 简短的解释:在这一部分中从存储中对数组进行格式化,并在表中向用户显示,这就在前面,b4用户做了一些事情。 在click事件之后的另一部分,我将我的用户新数据添加到表中,并将其添加到2D数组(表单有4个输入,每个表单字段保存为数组中的一行)

    chrome.storage.sync.get({purchases:[]},function(arr)
{
    var purchases=arr.purchases;
    var l=purchases.length();
    var table = document.getElementById("MyTable");


    for(var i=0;i<l;i++)
    {
        var tr = document.createElement("tr");
        for(var j=0;j<4;j++)
        {
            var txt = document.createTextNode("some value");
            var td = document.createElement("td");
            td.appendChild(txt);


        }
        tr.appendChild(td);
        table.appendChild(tr);

    }       
});

$(&#39;#submitForm&#39)。单击(函数(){

    chrome.storage.sync.get({purchases:[]},function(arr)
    {
    var row=[$('#ProductName').val(),$('#Amount').val(),$('#Date').val(),$('#WebStore').val()]; 
    var purchases=arr.purchases;
    purchases.push(row);
    //$('#product').text(purchases[0][3]);
    var table = document.getElementById("MyTable");
    var tr = document.createElement("tr");


    for(var j=0;j<4;j++)
        {
            var txt = document.createTextNode(purchases[0][j]);
            var td = document.createElement("td");
            td.appendChild(txt);

            tr.appendChild(td);
        }       
    table.appendChild(tr);
chrome.storage.sync.set({purchases:purchases});
});

html相关部分:

<form id="enterS" style="display: none;" method="post" >
    <label for="ProductName">Product Name:</label>
    <input type="text" id="ProductName">

    <label for="Amount">Amount:</label>
    <input type="text" id="Amount">
    <br>
    <label for="Date">Date:</label>
    <input type="text" id="Date">
    <br>
    <label for="WebStore">Which Web?:</label>
    <br>
    <input type="text" id="WebStore">
    <br>
    <input type="button" value="Submit" id="submitForm">
    <input type="button" value="Reset" id="reset">

    </form>


    <h3>the product name is..<span id="product">0</span></h3>

    <button class="button" id="show" style="vertical-align:middle"><span>Show My Spendings </span></button>
    <div id="showInfo" style="display: none;">
    <h3>total is:<span id="total">0</span></h3>
    <table id=MyTable>
    <tr>
    <th>Product</th>
    <th>Amount</th>
    <th>Date</th>
    <th>Site</th>
    </tr>
    </table>

我还没有背景文件。

这次生病了,试着让自己更清楚。 在一些帮助者说我明白问题是集合的异步,获取函数,所以我查看了这个问题的答案(只是理解问题是什么有用!)我明白我缺乏知识在很少的事情。

我看到很多人用这种形式写的(这是一个例子):

function storeUserPrefs() {
var key='myKey', testPrefs = {'val': 10};
    chrome.storage.sync.set({key: testPrefs}, function() {console.log('Saved', key, testPrefs);});

}

andi有一个问题需要理解,他正在尝试设置testprefs,他为什么要使用密钥,以及当我想要一个数组时,我将如何处理。

和一个愚蠢的问题,看看我是否开始理解:我的目的是&#34;等待&#34;将func设置为finsh她的工作和继续代码的ret? 以及console.log如何帮助我做到这一点?

对不起,我很困惑......

我非常希望这次病得更清楚,如果可以,请帮助,并原谅我的无知,如果我这次没写好,请再次编辑。

THX!

0 个答案:

没有答案