2013-07-24 30 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。是不是你的項目已經是一個字符串?

相關問題