document.getElementById在firefox中返回元素但不返回chrome

时间:2011-07-14 19:08:43

标签: javascript jquery firefox dom google-chrome

我正在尝试动态加载一个Coverflow类型的对象(想想itunes coverflow但不那么花哨)在网页加载后点击按钮。我正在动态创建一个图像列表,以便为封面流提供javascript,然后加载它们并使它看起来很漂亮。问题是在firefox中代码正常工作,但在chrome和ie(惊喜)中,javascript引发错误,并且由于下面的错误抛出页面将变为空白。问题出在这个试图通过id

捕获dom元素的代码块中
if (typeof(this.Container) == 'string') { // no node
    var container = document.getElementById(this.Container);
    if (container) {
        this.Container = container;
    } else {
        throw ('ContentFlow ERROR: No element with id \''+this.Container+'\' found!');
        return;
    }
}

在chrome中,如果在页面中明确可用,则圆顶元素不会被上面的代码捕获。我甚至在chrome的控制台中键入了document.getElementById("container_name");并且它返回了元素,所以我对于乳清无法在文件中工作无能为力。

任何建议都会得到应用

由于

编辑:

这是尝试填充的onpage html

<div id="contentFlow" class="cool_ui ContentFlow">
    <p id="coverflow_school_name"></p>
    <div class="loadIndicator"><div class="indicator"></div></div>
    <div class="flow" style="height:240px;"></div>
    <div class="scrollbar">
        <div class="slider"></div>
    </div>
</div>

ANSWERED:

哇,好的。我想到了。问题是在调用那段代码之前动态加载某些资源的方式。资源加载导致页面变为空白,从而使var container = document.getElementById(this.Container);返回null因此抛出异常。很奇怪的部分是firefox可以处理资源加载,但chrome不能。

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

为什么不使用jquery?

 $('#container_name')

更新:在二读时,这是元素的名称还是ID?

如果是名字则使用

$('[name="container_name"]')

答案 1 :(得分:0)

使用JQuery,你可以说

if($(this.Container).length){
    //Code goes here
}
else
{
    throw ('ContentFlow ERROR: No element with id \''+this.Container+'\' found!');
    return;
}

答案 2 :(得分:0)

我在Chrome 12.0.742.112中尝试了该代码,它似乎运行正常。这是一个链接:http://jsfiddle.net/eemYg/。 我假设另一件事导致了这个问题,例如this.Container。您应该检查它的值(在Chrome中)并查看其值是否与Firefox中的值不同。