1

ページに 50 個のドットがあり、それぞれが個別の div です。クリックすると、ID を使用して配列から値を取得したいと考えています。ID を取得できますが、その値を使用して配列からデータを取得するのに問題があります。おそらくグローバル変数の問題ですか?わからない。これが、複数のデータにアクセスする複数のクリックを処理する最善の方法であるかどうかさえわかりません。どんな助けでも大歓迎です!

var location0 = {"name" : "Location 1", "image" : "image1.jpg"};

$('.dot').click(function(){
    var thisLocation = $(this).attr("id");
    alert(thisLocation); //Returns "location0"
    alert(thisLocation["image"]); //Returns "undefined"
});

これがフィドルです。

4

3 に答える 3

5

私はこのようにします:

var locations = {
    location1 : {"name" : "Location 1", "image" : "image1.jpg"},
    location2 : {"name" : "Location 2", "image" : "image2.jpg"}
}

$('.dot').click(function(){
    alert(locations[this.id].name);
});
​

フィドル

于 2012-12-12T21:07:48.450 に答える
2

$(this).attr("id")String を返します"location0"。それを使用したい場合は、実際のlocation0変数を取得する必要があるため、関数を使用してコード行の 1 つを置き換える必要がありますeval()。このような:

var thisLocation = eval($(this).attr("id"));

ただし、 がキーになる新しい配列を使用することをお勧めし"location0"ます。その場合は、 のような文字列でキーにアクセスし、locations["location0"]使用を避けるだけで済みeval()ます。

于 2012-12-12T21:11:10.090 に答える
0

次のようにアクセスする必要があります。

var test = {
    location0:    {"name" : "Location 1", "image" : "image1.jpg"}
};


$('.dot').click(function(){
    var thisLocation = $(this).attr("id");
    alert(thisLocation); //Returns "location0"
    alert(test[thisLocation]["image"]); //Returns "undefined"
});

</p>

編集:これは機能します

また、最初に機能しない理由は、 thisLocation が文字列であり、それ自体がオブジェクトではないためです。そのため、名前を渡してオブジェクト プロパティにアクセスするには、ブラケットを使用する必要があります。アドバイスしません

于 2012-12-12T21:02:52.283 に答える