files/en-us/web/api/idbcursor/advance/index.md
{{APIRef("IndexedDB")}} {{AvailableInWorkers}}
The advance() method of the {{domxref("IDBCursor")}}
interface sets the number of times a cursor should move
its position forward.
advance(count)
count
None ({{jsxref("undefined")}}).
This method may raise a {{domxref("DOMException")}} of one of the following types:
TransactionInactiveError {{domxref("DOMException")}}
IDBCursor's transaction is inactive.count parameter was zero or a negative number.InvalidStateError {{domxref("DOMException")}}
In this simple fragment we create a transaction, retrieve an object store, then use a
cursor to iterate through the records in the object store. Here we use
cursor.advance(2) to jump 2 places forward each time, meaning that only
every other result will be displayed. advance() works in a similar way to
{{domxref("IDBCursor.continue")}}, except that it allows you to jump multiple records at
a time, not just always go onto the next record.
Note that in each iteration of the loop, you can grab
data from the current record under the cursor object using cursor.value.foo. For a complete working example, see our IDBCursor example (View the example live).
function advanceResult() {
list.textContent = "";
const transaction = db.transaction(["rushAlbumList"], "readonly");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
cursor.advance(2);
} else {
console.log("Every other entry displayed.");
}
};
}
{{Specifications}}
{{Compat}}