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.


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

Exception Description
TransactionInactiveError This IDBCursor's transaction is inactive.
TypeError The value passed into the count parameter was zero or a negative number.
InvalidStateError 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 example live.)>

function advanceResult() {
  list.textContent = '';
  const transaction = db.transaction(['rushAlbumList'], "readonly");
  const objectStore = transaction.objectStore('rushAlbumList');

  objectStore.openCursor().onsuccess = function(event) {
    const cursor =;
    if(cursor) {
      const listItem = document.createElement('li');
      listItem.innerHTML = '<strong>' + cursor.value.albumTitle + '</strong>, ' + cursor.value.year;
    } else {
      console.log('Every other entry displayed.');


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

Browser compatibility

BCD tables only load in the browser

See also