for循环在javascript中不起作用?
仅在浏览器帮助中打开最后一个图像时显示它为什么循环不工作for循环在javascript中不起作用?,javascript,Javascript,仅在浏览器帮助中打开最后一个图像时显示它为什么循环不工作 var i=0; function set() { for(i=1; i<=5; i++) { var image = "<img src=images/sl" + i + ".jpg"+" width='500' height='300' style='margin-left:400px;' />"; document.getElementById("slider
var i=0;
function set()
{
for(i=1; i<=5; i++)
{
var image = "<img src=images/sl" + i + ".jpg"+" width='500' height='300' style='margin-left:400px;' />";
document.getElementById("slider").innerHTML = image;
}
}
setInterval("set()","600");
<div id="slider">
<img src="images/sl1.jpg" />
</div>
var i=0;
函数集()
{
对于(i=1;i,您必须附加到innerHTML
,而不仅仅是设置它
var slider =document.getElementById("slider");
slider.innerHTML = slider.innerHTML + image;
每次更改DOM时,浏览器都必须重新呈现页面。为了获得更好的性能,只需将新的html存储在临时变量中一次即可
setInterval的第一个参数应该是函数名,而不是字符串
var i=0;
函数集()
{
var new_html='';
对于(i=1;i也许这就是你想要的
function setImage(i) {
var image = "<img src=images/sl" + i + ".jpg" + " width='500' height='300' style='margin-left:400px;' />";
document.getElementById("slider").innerHTML = image;
}
function loopImages(i) {
setImage(i); // set current Image
if (i == 5) {
i = 1; // reset the counter
}
setTimeout(function () {
loopImages(i++);
}, "600"); // set next image in 600 ms
}
loopImages(1);
函数setImage(i){
var image=“”;
document.getElementById(“slider”).innerHTML=image;
}
功能图像(一){
setImage(i);//设置当前图像
如果(i==5){
i=1;//重置计数器
}
setTimeout(函数(){
loopImages(i++);
},“600”);//在600毫秒内设置下一个图像
}
循环图像(1);
不知道是想让它在图像5上停止还是永远循环…是什么让你认为循环不起作用?不起作用永远不是一个好的描述不是一个解决方案,但不要将字符串传递给setInterval
。is使用eval
!传递函数。setInterval(set,600)
。那么,你到底想做什么?为什么有一个循环?为什么setInterval
还有!你需要在每次set
调用开始时清除innerHTML!@DanielA.White:不太可能。我测试过,Opera说它们都一样。Chrome说它快了1%。但是为什么每600毫秒运行一次相同的函数,做完全相同的事情?你确定这就是OP想要代码做的吗?我不知道是什么我觉得整个问题是一个X-Y问题。间隔延迟实际上是一个数字,而不是一个字符串。我也错过了。接得好。
function setImage(i) {
var image = "<img src=images/sl" + i + ".jpg" + " width='500' height='300' style='margin-left:400px;' />";
document.getElementById("slider").innerHTML = image;
}
function loopImages(i) {
setImage(i); // set current Image
if (i == 5) {
i = 1; // reset the counter
}
setTimeout(function () {
loopImages(i++);
}, "600"); // set next image in 600 ms
}
loopImages(1);