use `nodeValue` instead of `textContent` for textNodes