0

別のページから送信された JSON データを使用して一連の画像のソースを変更しようとしています。JSON データは次のようになります。

var jsondata = {
    "images": [
    {"src": "images/bgset.jpg"},
    {"src": "images/ar006.png"},
    {"src": "images/br006.png"},
    {"src": "images/cr006.png"},
    {"src": "images/dr006.png"},
    {"src": "images/er001.png"},
    {"src": "images/tr004.png"},
    {"src": "images/tr011.png"}
]}

srcそして、クラスの画像セットの値を変更しようとしています.imageset。また、最初のものを JSON データに残す方法を考えるのも面倒{"src": "images/bgset.jpg"}です。この問題を回避する方法がわからなくて困っています。このデータから値を取得する方法さえわかりません!

アップデート

答えてくれてありがとう!私が現在これを作成した答えで:

var jsonStr = location.search.substring(1).split('=');
var obj = JSON.parse(unescape(jsonStr[1]));
var jsondata = JSON.parse(obj.jsondata);
var aa = jsondata.images.length;
var ab = jsondata.images.slice(1, aa); // this part removes the first src
var ac = $(".imageset");
// here is the confusion part i found this will go through the set
for( var i = 0; i < aa; i++ ) {              
}
// and this will go through each class
ac.each( function() {
})

クラスごとに 1 つのイメージ src を配置できるこのコードの両方を結合するにはどうすればよいですか?

4

3 に答える 3

3

jQueryには、やりたいことを実行するための非常に優れた関数がいくつかあります。ここでそれらを見てみてください:http: //api.jquery.com/jQuery.parseJSON/

これは、コードでJSONを「読み取る」方法を教える必要があります。

画像ソースには、jQueryも使用します。使用できます

$(".imageset").attr("src", jsondata[0].src);

例えば。

imagesetクラスを使用してすべての画像をループしたい場合は、for / foreachループを使用するだけです(グーグル、簡単です)

于 2012-07-12T22:17:32.783 に答える
1

最初の画像ソースをスキップするつもりだった場合は、次のように関連するソースを取得します。

var relevantSources = jsondata.images.shift(); // All except the first one.

次に、次のようにクラス .imageset を持つ画像要素を作成します。

var relevantImageElements = document.getElementsByClassName(".imageset"); // Or jQuery $(".imagesets");

最後に、順序がすでに問題ないと仮定して、それらをループします。

var ln = Math.min( relevantSources.length, relevantImageElements.length;
for( var i = 0; i < ln; i++ ) {
    relevantImageElements[ i ].src = relevantSources[ i ];
}

これは便利ですか?

于 2012-07-12T22:20:41.763 に答える
0

これが有効な回答です。@EricGと@donnywalsの回答のおかげで、皆さんなしではできませんでした。

var jsonStr = location.search.substring(1).split('=');
var obj = JSON.parse(unescape(jsonStr[1]));
var jsondata = JSON.parse(obj.jsondata);
var aa = jsondata.images.length;
var ab = jsondata.images.slice(1, aa);
var i = 0;
$(".imageset").each(function(i) {
    $(this).attr("src", ab[i++].src);
});
于 2012-07-13T20:15:51.563 に答える