0

オブジェクトのプロパティへのアクセスに問題があります。

このようにオブジェクトのプロパティにアクセスすることはできませんか?

key["heading"]

上記のコードのキーは変数です。

以下のこのコードは、私が現在取り組んでいるコードです。

alertHeading.on('blur', function(){

    var inputtedVal = $(this).val();
    var key = alertMode.val();

    chrome.runtime.getBackgroundPage(function(backgroundPage) {

        var background = backgroundPage.background;

        //(1)This works fine.
        background.setStorage(key, {heading:inputtedVal});  
        console.log(background.getStorage(key));// Object {heading: "aaa"}

        //(2)This doesn't work.
        var alertObject = background.getStorage(key["heading"]);
        console.log(alertObject);// null. I'm expecting to get "aaa".

    });

})

JavaScriptの知識が不足しているため、非常に単純な間違いを犯していると思います。

この問題を解決するために私を助けてください。

4

1 に答える 1

4

あなたkeyはオブジェクトではなく、文字列です。それはbackground.getStorage(key)オブジェクトであるため、これを行うことができます:

var alertObject = background.getStorage(key)["heading"]; // note () and [] placement

// OR, in two steps:
var alertObject = background.getStorage(key);
var heading = alertObject["heading"];

編集:

「なぜオブジェクトではなく文字列なのか、まだわかりません」

変数は、 jQueryのメソッドkeyからの戻り値に設定されます。.val()

var key = alertMode.val();

...これは、呼び出されたフォーム要素の値である文字列を返します。a を追加するconsole.log(key)と表示されます。

于 2013-09-14T02:42:55.427 に答える