我在检查密钥是否已经存在后尝试在localStorage中设置,但是我收到了这个错误。任何人都知道发生了什么,我该如何解决?
chrome.storage.sync.get($div.attr('id'),function(items){
var lastError = chrome.runtime.lastError;
if (lastError) console.log($div.attr('id')+" does not exist.\n", lastError);
else chrome.storage.sync.set({$div.attr('id'):$div.html()}, function(){}); //I'm having the error from this line
});
未捕获的SyntaxError:意外的字符串
修改 显然这与attr('id')有关 因为我创建了一个变量,然后问题就消失了。无论如何,谢谢你 这是有效的:
var myobj = {}, key = $div.attr('id');
myobj[key] = $div.html();
chrome.storage.sync.get(key,function(items){
var lastError = chrome.runtime.lastError;
if (lastError) console.log(key+" does not exist.\n", lastError);
else chrome.storage.sync.set(myobj, function(){}); //The error is gone
});
答案 0 :(得分:4)
问题不在于attr
本身,而在于您尝试使用它在新对象文字上动态设置密钥的方式:
{$div.attr('id'):$div.html()}
您无法以这种方式创建对象文字。创建对象文字的关键字必须是字符串或数字文字。
要将动态键附加到对象,您宁愿执行以下操作:
else {
var obj = {}, key = $div.attr('id');
obj[key] = $div.html();
chrome.storage.sync.set(obj, function(){});
}