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() {
})

我如何加入这两个代码可以为每个班级放置一个图像 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 回答