在从先前的代码更新DOM之后运行javascript代码

时间:2010-01-28 22:15:51

标签: javascript dom

我正在使用Google新闻Feed,然后尝试通过访问新创建的DOM元素来解决一些错误格式。

var aryClassElements = document.getElementById('google-news').getElementsByTagName('div');
alert("Found "+aryClassElements.length+" divs in Google News");

但是此警报显示0.它没有找到新创建的DOM元素。的Ack!

如果我在加载Google新闻Feed和在google-news中询问dom for div元素之间添加一个无关警报(“hello world”),它会找到20个div元素。我假设用户响应时间点击“确定”让DOM更新。

是否有一些普通的javascript(不是jquery)可以实现相同的结果?

的Tx!

3 个答案:

答案 0 :(得分:1)

如果google-news提供了回调挂钩或伪事件,您可以附加函数然后使用它。如今,大多数javascript API都有它们。所以我的第一个建议是阅读它的文档。

如果没有,那么您可以使用setTimeout进行轮询,比如每秒一次,并在找到时执行您的函数:

function pollDOM () {
    var aryClassElements =
            document.
                getElementById('google-news').
                getElementsByTagName('div');

    if (aryClassElements.length) {
       // do stuff here;
    }
    else {
        setTimeout(pollDOM,1000);
    }
}
pollDOM();

答案 1 :(得分:0)

使用setTimeout创建人工延迟。更好的方法是使用ajax加载内容,在ajax完成后,设置新的html,然后尝试查找DOM元素。

答案 2 :(得分:0)

要加载Feed,我正在使用:

feed = new google.feeds.Feed(url);
feed.load(function(result) { [the function to add DOM elements here] }
[the function to read DOM elements here]

我只需要重新调整一下:

feed = new google.feeds.Feed(url);
feed.load(function(result) { 
  [the function to add DOM elements here]
  [the function to read DOM elements here]
}

一切都很好!菜鸟错误,谢谢你们指点我正确的方向。