2013-01-10 44 views
0

您好我在JavaScript代码中使用Firebug发现错误,“b为null”和我的图像不changing.What我想实现是3个图像在网页上,但在moment.Currently独立的最终交换它没有发生任何事情,我已经在3个着名的浏览器中测试过。Javascript变量空错误?

由于您使用Start索引到a任何帮助将是巨大的

<script type="text/javascript"> 
var ImageArr1 = new Array("banner1.jpg","banner2.jpg","banner3.jpg"); 
var ImageHolder1 = document.getElementById("photo"); 

function RotateImages(whichHolder,Start) 
{ 
    var a = eval("ImageArr"+whichHolder); 
    var b = eval("ImageHolder"+whichHolder); 
    if(Start>=b.length) 
     Start=0; 
    b.src = a[Start]; 
    document.getElementById('slideNumber').textContent = "Slide "+(Start+1)+" of   "+ImageArr1.length; 
    window.setTimeout("RotateImages("+whichHolder+","+(Start+1)+")",3500); 
} 

RotateImages(1,0); 
</script> 
+0

可能重复jQuery或DOM方法(如\'getElementByID \'找不到元素?](http://stackoverflow.com/questions/14028959/why-does-jquery-or-a-dom-method-such-as-getelementbyid -not-find-the-element) - 因为'b'是'null'你正在访问元素存在之前。 –

+1

另外你真的应该使用数组而不是变量变量......这是地狱之路。 –

+2

为什么......你为什么使用eval?!?!?!?即使不使用数组,您也可以使用var a = window ['ImageArr'+ whichHolder];'来获取全局变量。 – ThiefMaster

回答

0

,你应该改变你的if条件,以反映这一点:

... 
if(Start>=a.length) 
    Start=0; 
... 
的[为什么
+0

也是一个有效点,但并没有解决与'B'问题;) –

+0

<跨度ID = “slideNumber”> – user1259076