Html DOM对象没有列出属性?

时间:2016-10-12 23:08:20

标签: javascript 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语句)...意味着htmlObject没有给定键名称的属性。但是,当我检查DOM / DevTools时,属性实际上列在HtmlObject上。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

您需要使用方括号来访问htmlObject上的属性,该属性等于key的值

if(htmlObject[key].hasOwnProperty('textContent')){
 // ...
}

在您的情况下,您正在查看天气keyhtmlObject"key"字符串文字callback可能是等效的在点符号vs []表示法的情况下键入。

答案 1 :(得分: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);
    }
}