【问题标题】:Adding new objects to chrome local storage将新对象添加到 chrome 本地存储
【发布时间】:2015-01-11 08:59:03
【问题描述】:

HTML代码:

<select id="server">
                <option value="kr">KR</option>
                <option selected value="euw">EUW</option>
                <option value="oce">OCE</option>
                <option value="las">LAS</option>
                <option value="ru">RU</option>
                <option value="na">NA</option>
                <option value="eune">EUNE</option>
                <option value="br">BR</option>
                <option value="lan">LAN</option>
                <option value="tr">TR</option>
</select>
<input type="text" id="nickname" maxlength="16"></input></p>
<button id="save" class="flat-button">Save</button><br>

Javascritp 代码:

function save_options() {
  var server = document.getElementById('server').value;
  var prenickname = document.getElementById('nickname').value;

  var nickname = prenickname.replace(/(<([^>]+)>)/ig,""); //Remove html tags

  chrome.storage.sync.set({
    yourserver: server,
    yournickname: nickname
  }, function() {
    var status = document.getElementById('status');
  });
}

实际上,当我保存(按下按钮)到本地存储时,显然它会覆盖我的旧对象。我想做它添加一个新对象(如数组或列表),我希望你明白我的意思。结果必须是我可以存储不同的“服务器+昵称”,而不仅仅是一个。

【问题讨论】:

    标签: javascript google-chrome-extension local-storage


    【解决方案1】:

    要做你想做的事,你需要使用一个对象数组:你将使用chrome.storage.sync.get获取数组的值,你将把你的新服务器和昵称添加到数组中,然后使用@987654323 @ 覆盖现有值并保存。

    您的数组将如下所示:

    data = [
        {yourserver: 'server1', yournickname: 'nickname1'},
        {yourserver: 'server2', yournickname: 'nickname2'},
        {yourserver: 'server3', yournickname: 'nickname3'},
        ...
    ];
    

    下面是代码示例:

    // Get all the items stored in the storage
    chrome.storage.sync.get(function(items) {
        if (Object.keys(items).length > 0 && items.data) {
            // The data array already exists, add to it the new server and nickname
            items.data.push({yourserver: server, yournickname: nickname});
        } else {
            // The data array doesn't exist yet, create it
            items.data = [{yourserver: server, yournickname: nickname}];
        }
    
        // Now save the updated items using set
        chrome.storage.sync.set(items, function() {
            console.log('Data successfully saved to the storage!');
        });
    });
    

    【讨论】:

    • 抱歉耽搁了这么久,但在处理代码我有一个问题,我如何打印保存在对象数组中的数据,这样的东西不起作用:"chrome.storage.sync.get(function(items) { document.getElementById("nicknameonpage").innerText = items.mydata.yournickname; });" 这是如何对象已保存:dl.dropboxusercontent.com/u/22722558/11123123123123.PNG
    • @master94ga 你将它保存为一个数组,你应该使用items.mydata[0].yournickname
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    相关资源
    最近更新 更多