Thijs Koerselman Thijs Koerselman - 6 months ago 31
Javascript Question

What's wrong with this JSDOM setup?

import jsdom from 'jsdom'

const virtualConsole = jsdom.createVirtualConsole()

virtualConsole.on('jsdomError', ({stack, detail}) => console.error(stack, detail))

global.document = jsdom.jsdom(`
<html>
<body>
<div id="foo">some text</div>
</body>
</html>
`, { virtualConsole })

global.window = document.defaultView
global.navigator = window.navigator

const elem = document.getElementById('foo')
console.log('foo text', elem.text())


This gives me the wonderful error
elem.text is not a function


I'm using JSDOM v9.1.0

What am I missing?

Answer

.text() is a jQuery method that returns the text content of a given element(s). It isn't actually part of the JavaScript DOM API I'm afraid. Try using the .textContent property. (MDN link).

const elem = document.getElementById('foo')
console.log('foo text', elem.textContent)