我正在使用JavaScript來創建來自文本源的鏈接列表。使用document.write(),重置/創建一個不希望的新頁面。我不知道列表中的項目數量,因此預先組合一個列表並使用innerHTML來設置值似乎不「可行」?如何在JS中生成動態列表?動態生成沒有document.write的列表?
回答
您可以使用document.createElement
動態創建元素。它例如可以這樣工作的:
var container = document.getElementById('my-list'),
items = [],
addItem;
addItem = function (text) {
var elm = document.createElement('li');
elm.innerHTML = text;
container.appendChild(elm);
items.push(elm);
};
// generating random list
var i = 0,
j = Math.floor(Math.random() * 50);
for (i; i < j; i++) {
addItem('list item ' + i);
}
謝謝,createElement正是我需要的+1 –
由於馬蒂Mehtonen說,你可以使用document.createElement()
,以便動態創建元素。有一點需要注意,不是直接將新創建的元素附加到DOMnode中,而應該創建一個文檔片段並將元素附加到DOMnode中,然後將片段追加到DOMnode中。這樣的過程會更快。
var items = ['cars', 'toys', 'food', 'apparel'];
function render(elementId, list) {
//getting the list holder by id
var el = document.getElementById(elementId);
//creating a new document fragment
var frag = new DocumentFragment();
//iterate over the list and create a new node for
//each list item and append it to the fragment
for (var i = 0, l = list.lenght; i < l; i++) {
var item = document.createElement('span');
frag.appendChild(item.innerHTML = list[i]);
}
//finally append the fragment to the list holder
el.appendChild(frag);
}
//rendering
render("my-list-holder", list);
啊,所以不是多次寫入DOM節點,這樣我就可以一次完成所有工作?乾杯。 –
是的,從技術上講,您可以將一堆DOM節點附加到文檔片段中,而不是單獨追加它們。如[在此](https://developer.mozilla.org/en/docs/Web/API/DocumentFragment)所述,它是Document的輕量級版本。 –
- 1. jquery動態列表生成
- 2. 沒有GD的動態圖生成
- 3. 動態生成列
- 4. C#生成按鈕的動態列表
- 5. 動態生成列表的建議
- 6. 生成陣列的動態
- 7. 動態生成ffmpeg參數列表C
- 8. Javascript drop down for動態生成列表
- 9. 生成動態列表解析在Python
- 10. 動態生成javascript可擴展列表
- 11. 動態生成目標列表
- 12. jquery:對話框沒有在動態生成的表中彈出
- 13. Jquery/JS動態生成的表沒有事件處理
- 14. 單元格跨越動態生成的表格的所有列
- 15. 從動態生成的下拉列表中動態選擇
- 16. 從行自動生成列(沒有IF)
- 17. 從現有表格動態生成TVP?
- 18. 動態生成列mvvm
- 19. 動態SQL列生成
- 20. 生成陣列值動態
- 21. 如何動態生成列?
- 22. 需要動態生成列
- 23. 如何使用rich:dataTable生成具有動態列的表?
- 24. 有沒有辦法自動生成bundledDependencies列表?
- 25. 動態生成表格/從模型生成的動態表單/表單
- 26. 將動態生成的列表添加到新列表中
- 27. 生成動態數組列表和列表視圖中的Android
- 28. 動態HTML表格生成
- 29. 軌動態生成表單
- 30. 動態表單生成
可以請您更新代碼 –
前置作曲也許不是,但使用'innerHTML',而不是'document.write'應該永遠是可行的。請顯示您嘗試的代碼。 – Bergi