2017-08-08 114 views
-3

随着年代库,我正在将RSS订阅源加载到我的HTML文档中。这工作。javascript div儿童不工作

working html

但后来我想从我的JavaScript访问的div。

我可以查找父节点(var test)并将其放入控制台。但是,当我想要得到的子元素的数量,则返回0。

我用下面的代码:

var test = document.querySelector('#History_0'); 
console.log("test:"); 
console.log(test); //Returns <div class="item_trackHistory rss-feed" id="History_0"> 
console.log("test.childElementCount:"); 
console.log(test.childElementCount); //Returns 0 

不过,我可以看到子元素我想在检查访问。

browser infos

为什么我可以看到#History_0-div的孩子们在开发工具,但属性childElementCount返回0?

如何在JavaScript中访问元素的子元素?


对不起,我第一次编辑我的问题时出错。 这里是整个函数调用。我也从下面输入了建议的解决方案。不幸的是,它没有解决。

code

for (var i = 0; i < obj.results.length ; i++){ 
       var div = "History_" + i 
       getRSS(div ,obj.results[i].feedUrl, i); 
      } 

code

this.getRSS = function(div, link, iteration){ 
      $('#'+div+'').yrss(link,{ 
      limit: 50, 
     dateformat: 'localedate', 
     tags:'true', 
     logging:'false' 
     }); 

    var parent = document.querySelector('#History_'+iteration+''); 
    var childCount = 0; 

    if (parent !== null){ 
     var childElements = parent.getElementsByClassName('entry-wrapper'); 

     console.log(childElements); 
     console.log(childElements.item(0)); 

     if(childElements !== null){ 

      childCount = childElements.length; 
      console.log(childCount); 

     } 
    } 

ChildElements的执行console.log返回一个HTML集合,其中似乎有20个条目。但是控制台记录ChildElement.item(0),它返回null。 childCount的控制台日志返回0.

有没有人有一个想法,如何访问childElements? 在我的整个js文件中,我应该调用一个访问div的函数,yrss函数创建?

+1

可能是因为它们是在代码运行后插入的。提供一个[mcve] – charlietfl

+0

请在您的问题中包含所有代码作为_text_,而不是图片。 – jmoerdyk

回答

0

不是别人指出的最好的问题,但是,我们可以看一些简单的东西。我不确定页面加载后页面是否加载RSS提要。我相信不会,并会回答它假设的确如此。

你可以在这里看到我工作的代码示例: https://codepen.io/vincentritter/pen/vJmBrd?editors=1010

我已经添加笔记了。这里是最重要的片段,让你开始。

// Grab 'parent' div - History_0 or by class name 'rss-feed' 
var parent = document.querySelector('.rss-feed'); 
var childCount = 0; // Just want to spit this out on the page so you can see. 
// Check if parent isn't null 
if(parent !== null){ 
    // Get child elements by class name 
    var childElements = parent.getElementsByClassName('entry-wrapper'); 
    // Check if child elements isn't null... 
    if(childElements !== null){ 
    // Print results, just so we can look. 
    childCount = childElements.length; 
    console.log(childCount); 

    } 
} 

我用你的图片作为参考。

要注意,我通过他们的类名抓取东西。只是发现更容易。但每个人都是不同的,无论你为什么工作。

这应该让你至少去。

+0

谢谢你的回答,文森特。不好意思,它没有完全解决。我更新了我上面的原始问题,以便您可以看到更多的代码。你有一个想法,我应该把你的代码片段访问子div? – AukiJuanDiaz