好的,所以我会做一个大的刷新:
这是我的清单:
{
"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!