我有一個for循環看起來像這樣:JS for循環不工作
for (var i = 0; i < list.length; i++) {
它是通過數據庫中的數據火力地堡循環和數據庫返回的所有數據。
但是,我希望它只能達到前10個數據庫項目。所以我改變了環路:
for (var i = 0; i < 9; i++) {
但這無法顯示任何結果時,有不到10個數據的數據庫。但是,如果我將數字設置爲數據庫中包含的很多對象,例如10,因爲我有10個對象,則會將它們全部顯示出來。但是,任何少於這個數字,我只是得到一個空白的網頁。
這裏是網頁時,我有我的火力地堡數據庫10個對象:
在這裏,它是當我刪除這些對象之一:
我有不知道爲什麼會發生這種情況 - 邏輯是正確的 - 如果我小於9,然後顯示數據 - 但相反,它只會顯示它,當它等於9時。
以下是完整的JS:
function refreshUI(list) {
var lis = '';
var lis2 = '';
var lis3 = '';
var lis4 = '';
for (var i = 0; i <= 9; i++) {
lis += '<li data-key="' + list[i].key + '" onclick="addText(event)">' + list[i].book + '</li>';
lis2 += genLinks(list[i].key, list[i].book)
};
for (var i = 10; i < list.length; i++) {
lis3 += '<li data-key="' + list[i].key + '" onclick="addText(event)">' + list[i].book + '</li>';
lis4 += genLinks(list[i].key, list[i].book)
};
document.getElementById('bookList').innerHTML = lis;
document.getElementById('bookList2').innerHTML = lis2;
document.getElementById('bookList3').innerHTML = lis3;
document.getElementById('bookList4').innerHTML = lis4;
};
function genLinks(key, bkName) {
var links = '';
links += '<a href="javascript:del(\'' + key + '\',\'' + bkName + '\')"><img src="images/bin.png" style="width: 24px; height: 24px; transform: translateY(-7px); opacity: .4;"></img></a> ';
return links;
};
function del(key, bkName) {
var response = confirm("Are certain about removing \"" + bkName + "\" from the list?");
if (response == true) {
// build the FB endpoint to the item in movies collection
var deleteBookRef = buildEndPoint(key);
deleteBookRef.remove();
}
}
function buildEndPoint (key) {
return new Firebase('https://project04-167712.firebaseio.com/books/' + key);
}
// this will get fired on inital load as well as when ever there is a change in the data
bookList.on("value", function(snapshot) {
var data = snapshot.val();
var list = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
book = data[key].book ? data[key].book : '';
if (book.trim().length > 0) {
list.push({
book: book,
key: key
})
}
}
}
// refresh the UI
refreshUI(list);
});
如果有人有任何幫助,我不勝感激!
試試這個'pseudocode':如果您的列表長度超過9更大然後取出僅有10元,如果不使用list.length作爲你的門檻(這樣你沒有索引超出範圍例外) – Hackerman