我正在尝试编写一个javascript代码,它将循环通过一个数组元素列表,并使用innerHtml在div中写入循环。我正在寻找一个纯粹的JavaScript解决方案,没有JQuery。我,卡住了。
这是我的相关代码和这个jsFiddle:http://jsfiddle.net/j3XD5/
<div id="slideshow"> </div>
-
var url=new Array('im01.jpg', 'im02.jpg', 'im03.jpg', 'im04.jpg');
var pause=2000;
var p=0;
function sl()
{
if (p<=url.length-1)
{
document.getElementById('slideshow').innerHtml = '<img name="pic" src='+url[p]+' border=0>';
p++;
var t=setTimeout(sl(),pause);
}
else
{
p=0;sl()
}
}
window.onload=sl();
答案 0 :(得分:2)
您正在调用sl
函数,而不是将其作为值传递。
更改
var t=setTimeout(sl(),pause);
到
var t=setTimeout(sl,pause);
和
window.onload=sl();
到
window.onload=sl;
由于JavaScript区分大小写,因此您还必须将innerHtml
更改为innerHTML
。
您还可以使用%
而不是测试来简化整个过程。
这是一个工作代码(根据usual guidelines修复的样式):
var pause=1000, p=0;
window.onload = function sl(){
document.getElementById('slideshow').innerHTML = '<img name="pic" src="'+url[p]+'" border=0>';
p = (p+1)%url.length;
setTimeout(sl, pause);
};
<强> Demonstration 强>