我正在尝试动态加载一个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不能。感谢您的帮助
答案 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中的值不同。