IDBCursor: advance() method

The advance() method of the IDBCursor interface sets the number of times a cursor should move its position forward.

Note: This feature is available in Web Workers





The number of times to move the cursor forward.

Return value

None (undefined).


This method may raise a DOMException of one of the following types:

TransactionInactiveError DOMException

Thrown if this IDBCursor's transaction is inactive.


Thrown if the value passed into the count parameter was zero or a negative number.

InvalidStateError DOMException

Thrown if the cursor is currently being iterated or has iterated past its end.


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 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 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 =;
    if (cursor) {
      const listItem = document.createElement("li");
      listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
    } else {
      console.log("Every other entry displayed.");


Indexed Database API 3.0
# ref-for-dom-idbcursor-advance①

Browser compatibility

BCD tables only load in the browser

See also