Объект Html DOM не перечисляет свойства?

Я пытаюсь вывести текст с веб-страницы с помощью кода ниже:

const theHtml = document.children[0];
function showThePage(htmlObject){
  for(var key in htmlObject){
    console.log(key);
    console.log(htmlObject.hasOwnProperty(key));
    if(htmlObject.hasOwnProperty(key))
    {
      if(htmlObject.key.hasOwnProperty('textContent')){
        console.log(key.textContent);
      }
    }
  }
}
showThePage(theHtml);

Что-то жуткое происходит со свойствами / детьми. Когда я проверяю свойство по имени каждого ключа, он никогда не является истинным (исполнение никогда не входит в оператор if) ... означает if ( htmlObject [ key ]. HasOwnProperty ( 'textContent' )) { // ... } не имеет свойств по имени указанных ключей. Однако, когда я рассматриваю DOM / DevTools, свойства фактически перечислены в HtmlObject. Я что-то упускаю?

javascript,dom,

0

Ответов: 2


2

Вам нужно использовать квадратные скобки для доступа к свойству в объекте htmlObject, который равен значению key

htmlObject

В вашем случае, вы хотите , чтобы проверить переждать значение из keyнаходится в htmlObjectСтроковый литерал "key", возможно , эквивалентно ключу в случае точечной нотации против [] нотации.


1

Рассмотрите возможность использования document.querySelectorAll().. вы можете использовать любой селектор jQuery / CSS, чтобы возвращать только те элементы, из которых вы хотите извлечь текст.

var elements = document.querySelectorAll('*');
for ( var i = 0 ; i < elements.length ; ++i ) {
    var key = elements[i];
    if ( key && key.textContent ) {
        console.log(key,key.textContent);
    }
}
JavaScript, дом,
Похожие вопросы