2016-06-04 5 views
0
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()) 

Это дает мне замечательную ошибку elem.text is not a functionЧто случилось с настройкой JSDOM?

Я использую JSDOM v9.1.0

Что мне не хватает?

+1

Какую функцию вы ожидали от '.text()'? Это DOM, а не jQuery. Вместо этого попробуйте 'elem.innerText' или' elem.textContent'. – Bergi

+0

'.text()' не является функцией DOM. Это функция jQuery. – Tomalak

ответ

0

.text() - метод jQuery, который возвращает текстовое содержимое данного элемента (ов). Я боюсь, что это фактически не часть JavaScript DOM API. Попробуйте использовать свойство .textContent. (MDN link).

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

Haha damn -_-. Я фактически использовал innerText раньше, но использовал его как функцию вместо свойства. Спасибо, что разбудил меня –