使用chrome.storage.local.set变量键[复制](Using a variable

2019-07-20 05:42发布

这个问题已经在这里有一个答案:

  • chrome.storage.local.set使用可变密钥的名字 2个回答

我创建一个铬扩展。 我不知道如何使用一个变量为重点,以chrome.storage.local.set()函数。 我试过了

var key = 'myKey';
chrome.storage.local.get(key, function(val) { 
    chrome.storage.local.set({key:val[key]+param1}); //appending  param1
    alert(val[key]);
}

在这里,我想获得的值val[key]和追加一个字符串param1 ,并把它重新使用相同的密钥存储。 但我不能这样做。 警告框显示undefined所有的时间。


但是,当我尝试没有变key它工作正常

chrome.storage.local.get('myKey', function(val) { 
    chrome.storage.local.set({myKey:val['myKey']+param1}); //appending  param1
    alert(val['myKey']);
}

问题是,我使用chrome.storage.local.set可以不仅字符串的论点,但也是对象。

Answer 1:

在JavaScript中,使用非静态变量名的唯一方式是通过分配一个值作为属性,而不是使用对象文字。

var key = 'myKey';
var param1 = 'whatever';
chrome.storage.local.get(key, function(val) {
    // Create property if does not exist (yet)
    if (typeof val[key] != 'string') val[key] = '';
    // Append value of param1
    val[key] += param1;
    // Save data
    chrome.storage.local.set(val);
    alert(val[key]);
});

注意:您可能需要验证set成功了。 这可以通过使用一个回调来完成。 例如:

    chrome.storage.local.set(val, function() {
        if (chrome.extension.lastError) {
            alert('An error occurred: ' + chrome.extension.lastError.message);
        }
    });


Answer 2:

我已经解决了这个问题。 代替使用chrome.storage.local.set({key:val[key]+param1});

我已经取代了JSON字符串{key:val[key]+param1}与一个对象。

var obj = {};       
var key = "myKey";  
obj[key] += param1;   
chrome.storage.local.set(obj);

这里obj具有值{"myKey":"the appended value"}



文章来源: Using a variable key in chrome.storage.local.set [duplicate]