same selector returns distinct NodeList objects: true .item count after append: 1 .item count after second append: 2 .item count after remove: 1 .item count from document: 1 .item count after classList.remove: 0 .item count after classList.add: 1 #needle count after id set: 1 #needle count after id removed: 0 [data-k=v] count after setAttribute: 1 [data-k=v] count after attribute value change: 0 [data-k] count after removeAttribute: 0 :disabled count before: 0 :disabled count after: 1 FACE :enabled count before define: 0 FACE :enabled count after define: 1 FACE :disabled count before define: 0 FACE :disabled count after define: 1 :checked count before: 0 :checked count after: 1 :has(:checked) count after: 1 div:empty count before: 0 div:empty count after text.data = "": 1 div:empty count after text.data restored: 0 div:empty count after textContent = "": 1 i:nth-child(2) before reorder: two i:nth-child(2) after reorder: one :scope > .item count: 1 :scope > .item count after append: 2 disconnected .x count: 1 disconnected .x count after append: 2 shadow .s count: 1 shadow .s count after append: 2 traveler .y count: 1 traveler .y count after adopt roundtrip: 2 querySelector agrees with querySelectorAll[0]: true querySelector after remove: true repeated query returns distinct objects: true repeated query returns identical non-empty results: true querySelector agrees with repeated querySelectorAll[0]: true repeated empty query stays empty: true