2016-01-18 32 views
0

我正在使用Wordpress JSON API插件和自定義字段。在for循環中切換JSON鍵(jQuery)

這裏是JSON文件的相關部分:

{ 
    "post": { 
    "custom_fields": { 
     "tracks": [ 
     "4" 
     ], 
     "tracks_0_name": [ 
     "First Track" 
     ], 
     "tracks_1_name": [ 
     "Second Track" 
     ], 
     "tracks_2_name": [ 
     "Third Track" 
     ], 
     "tracks_3_name": [ 
     "Fourth Track" 
     ] 
    }, 
} 

於是,我立即知道有多少曲目有從tracks關鍵。我然後運行這個(其中trackCount = tracks):

for(var i = 0; i < trackCount; i++) { 

    newTrack = '<li>'; 
    newTrack += '<div class="trackNum">'+(i+1)+'</div>'; 
    newTrack += '<span>'; 
    newTrack += result.post.custom_fields.tracks_X_name; 
    newTrack += '</span>'; 
    newTrack += '</li>'; 

    $('.tracklist .main').append(newTrack); 
} 

tracks_X_name需求基礎上,i變量每次改變,我不能爲我的生活弄清楚如何。有什麼想法嗎?

注:該代碼工作,如果我跑這跟我tracks_0_name得到4個曲目標題相同,但算上等,都是好的。這只是針對每個循環實例上的正確鍵的一種情況。

+3

切換到索引名稱:'newTrack + = result.post.custom_fields [「tracks_」+ i +「_name」];' – Twisty

+0

AHA!我試過這個,但是保留了「字段」和開頭的方括號之間的時間段:facepalm :.作品的魅力,隨意添加爲答案;) –

+0

它完成了!謝謝。 – Twisty

回答

1

移動我的一個答案評論:

切換到索引名稱:

newTrack += result.post.custom_fields["tracks_" + i + "_name"]; 

很難做到所有點符號。

1

最簡單的解決方法是從點符號鍵更改爲類似這樣:

newTrack += result.post.custom_fields['tracks_'+i+'_name']; 

不過,我會建議改變你如何組織你的數據:

{ 
"post": { 
    "custom_fields": { 
     "tracks": [ 
     "4" 
     ], 
     "tracks_0_name": [ 
     "First Track" 
     ], 
     "tracks_1_name": [ 
     "Second Track" 
     ], 
     "tracks_2_name": [ 
     "Third Track" 
     ], 
     "tracks_3_name": [ 
     "Fourth Track" 
     ] 
    }, 
} 

這種方法可以如果軌道數與實際軌道數不同,則會導致錯誤或不良行爲。如果我寫這篇文章的時候,我會做更多這樣的:

{ 
    "post": { 
    "custom_fields": [ 
     "tracks_0_name", 
     "tracks_1_name", 
     "tracks_2_name", 
     "tracks_3_name" 
    ] 
    } 
} 

而對於JQuery的:

var len = result.post.custom_fields.length; 
for(var i = 0; i < len; i++) { 

    newTrack = '<li>'; 
    newTrack += '<div class="trackNum">'+(i+1)+'</div>'; 
    newTrack += '<span>'; 
    newTrack += result.post.custom_fields[i]; 
    newTrack += '</span>'; 
    newTrack += '</li>'; 

    $('.tracklist .main').append(newTrack); 
} 
+0

每次添加新曲目時,「曲目」值都會更新,因此它總是**會與曲目總數相同。更改JSON的結構並不是一個真正的選擇(這是WP JSON API插件的默認設置)。另外,* Twisty *的評論已經解決了這個問題。無論如何,歡呼! –