2013-07-24 11 views
1

所以我有这个JS代码,从PHP文件中拉JSON。这样可行。我想要做的就是改变JSON值,然后将它们放入DOM中以用低分辨率图像替换图像URL。你会看到今年年初在IF语句调用移动()函数为什么我无法替换这些传入的JSON图像的URL?

这里,我们去:

$.post(url, project, function(data, textStatus) { 
    $(data.tags).each(function(i, item){ 
    projectTags += "<span class='project-tag'>"+item+"</span>"; 
    }); 

    $(data.slides).each(function(i, item){ 

    if ((mobile() == true && $(window).width() <= 680)){ 
     if (i != 0){ 
     console.log('Before' +item); 
     var newItem = JSON.stringify(item); 
     $(newItem).replace('.png','-lofi.png'); 
     console.log(newItem); 

     console.log('After' + item); 
     } 
    } 

    projectImages += "<div class=\"slide-container\">" + item + "</div>"; 
    console.log(projectImages); 
    }); 
    setTimeout(function(){ 
    btnAbout.removeClass('active'); 
    sectionDetail 
     .attr('data-id', data.id) 
     .find('.project-name').html(data.name).end() 
     .find('.project-year').html(data.year).end() 
     .find('.project-agency').html(data.agency).end() 
     .find('.project-details').html(data.details).end() 
     .find('.project-tags').html(projectTags).end() 
     .find('#slideshow').html(projectImages); 
}, "json"); 

是怎么回事?我想要做的就是替换JSON值的URL,如果它是比iPad小的移动设备。

编辑:修正了James!谢谢哥们!最终代码如下。

$.post(url, project, function(data, textStatus) { 
    $(data.tags).each(function(i, item){ 
    projectTags += "<span class='project-tag'>"+item+"</span>"; 
    }); 

    $(data.slides).each(function(i, item){ 
    var loFi = JSON.stringify(item); 
    if ((mobile() == true && $(window).width() <= 680)){ 
     if (i != 0){ 
     loFi = loFi.replace(/(.png)/g,'-lofi.png') 
     loFi = $.parseJSON(loFi); 
     item = loFi; 
     } 
    } 
    projectImages += "<div class=\"slide-container\">" + item + "</div>"; 

    }); 
    setTimeout(function(){ 
    btnAbout.removeClass('active'); 
    sectionDetail 
     .attr('data-id', data.id) 
     .find('.project-name').html(data.name).end() 
     .find('.project-year').html(data.year).end() 
     .find('.project-agency').html(data.agency).end() 
     .find('.project-details').html(data.details).end() 
     .find('.project-tags').html(projectTags).end() 
     .find('#slideshow').html(projectImages); 
}, "json"); 
+0

你能提供一个JSON的例子吗? –

回答

1
$(data.slides).each(function(i, item){ 

var newItem = JSON.stringify(item); <-- Add this early 

if ((mobile() == true && $(window).width() <= 680)){ 
    if (i != 0){ 
    console.log('Before' +item); 
    newItem = newItem.replace(/(.png)/g,'-lofi.png'); 
    console.log(newItem); 

    console.log('After' + item); 
    } 
} 

你仍然在增加的经常项目吗?您对项目所做的任何更改都不会反映出来。

projectImages += "<div class=\"slide-container\">" + item + "</div>"; 

变化

projectImages += "<div class=\"slide-container\">" + newItem + "</div>"; 
+0

你最接近被发现(我们需要在这个特定的实例中将字符串变回一个对象),所以你得到检查。我会更新我的问题以反映最终的代码!谢谢! – j0e

2

应该是:

var newItem = JSON.stringify(item); 
newItem = newItem.replace('.png','-lofi.png'); 

你忘了指定的“替换”你的变量的结果,你不需要包装的newitem在$(..)中,replace是一个String对象函数。

PS。你可能不需要stringify。是不是你的项目已经是一个字符串?

相关问题