我有一個for循環,它遍歷一些JSON併爲每個迭代輸出三個不同的值。從我讀過的內容來看,最好不要在for循環中進行追加操作,而是最好將值保存到數組中並將其追加到循環外部。追加循環迭代到html
我的問題是,如果我有三個包含我的值的數組,請說出書名,作者和URL - 我將如何追加這些以便它們如下所示?而不是三個單獨的所有值的列表。
Book Title
Author
URL
Book Title
Author
URL
我有一個for循環,它遍歷一些JSON併爲每個迭代輸出三個不同的值。從我讀過的內容來看,最好不要在for循環中進行追加操作,而是最好將值保存到數組中並將其追加到循環外部。追加循環迭代到html
我的問題是,如果我有三個包含我的值的數組,請說出書名,作者和URL - 我將如何追加這些以便它們如下所示?而不是三個單獨的所有值的列表。
Book Title
Author
URL
Book Title
Author
URL
你總是可以創建一個documentFragment:
var data = ['1', '2', '3', '4'];
// Create empty fragment
var fragment = document.createDocumentFragment();
// My iteration that will append items to the fragment
for (var i = 0; i < data.length; i++) {
var item = document.createElement('span');
item.appendChild(document.createTextNode(data[i]));
fragment.appendChild(item);
}
// After my iteration i will append my fragment
// to the place in the page I want my newly created items to appear.
document.body.appendChild(fragment);
如果所有三個數組的長度相同:
var titles = ['Title 1', 'Title 2', 'Title 3'],
authors = ['Author 1', 'Author 2', 'Author 3'],
urls = ['URL 1', 'URL 2', 'URL 3'],
fragment = document.createDocumentFragment();
for (var i = 0, len = titles.length; i < len; i++) {
var title = document.createTextNode(titles[i]),
author = document.createTextNode(authors[i]),
titleEl = document.createElement('h1'),
authorEl = document.createElement('h2');
titleEl.appendChild(title);
authorEl.appendChild(author);
fragment.appendChild(titleEl);
fragment.appendChild(authorEl);
if (urls[i]) {
var url = document.createTextNode(urls[i]),
urlEl = document.createElement('p');
urlEl.appendChild(url);
fragment.appendChild(urlEl);
}
}
document.body.appendChild(fragment)
謝謝你,我會試試看。雖然偶爾有一本書沒有URL,所以我想這會打破它,因爲數組會有不同的長度。 – podusmonens
是的,但是你的數組有一個普遍的問題。如果該位置僅在URL數組中丟失,則不知道該URL屬於哪本書。您應該在URL數組中使用'null'填充這些缺少的URL。你懂我的意思嗎? – dsuckau
是的,這是有道理的,我會調整我的代碼,所以如果JSON值爲空,它會將null添加到數組中。 – podusmonens
你爲什麼不創建一個列表,並通過一個新增項目一個從你的json。 – cracker
你能告訴我們你現在得到了什麼嗎?你能顯示for循環嗎? –
這就是我想要做的,但我不知道如何。我可以創建三個單獨的列表,即書名列表,作者列表和URL列表,但我似乎無法使它們如上所示出現。 – podusmonens