单击后JavaScript SetInterval()不起作用

单击后JavaScript SetInterval()不起作用,javascript,setinterval,Javascript,Setinterval,嗨,我已经写了这段代码,它假设在点击对象后每3000毫秒移动一次对象,但是有些时间它是如何不工作的,谁能告诉我我做错了什么,我只是在学习javascript;多谢各位 function move1() { var im1 = document.images[0]; im1.onclick = function() { im1.style.left = parseInt(im1.style.left) + 1 + "px"; } } function mo

嗨,我已经写了这段代码,它假设在点击对象后每3000毫秒移动一次对象,但是有些时间它是如何不工作的,谁能告诉我我做错了什么,我只是在学习javascript;多谢各位

function move1() {
    var im1 = document.images[0];
    im1.onclick = function() {
        im1.style.left = parseInt(im1.style.left) + 1 + "px";
    }
}

function move2() {
    var im2 = document.images[1];
    im2.onclick = function() {
        im2.style.left = parseInt(im2.style.left) + 10 + "px";
    }
}

window.onload = function() {
    setInterval(move1, 100);
    setInterval(move2, 3000);
}

移动功能会在单击时注册图像,但在用户单击之前不会实际执行任何移动。您想要的更像这样:

function move1() {
    var im1 = document.images[0];
    im1.style.left = parseInt(im1.style.left) + 1 + "px";
}

function move2() {
    var im2 = document.images[1];
    im2.style.left = parseInt(im2.style.left) + 10 + "px";
}

window.onload = function() {
    var im2 = document.images[1];
    im2.onclick = function() {
        setInterval(move2, 3000);
    }

    im1.onclick = function() {
        setInterval(move1, 100);
    }
}

你的做法正好相反。每3000ms,您可以在单击图像时将其移动1px

function move(el, ms, px) {
/* moves the el every ms by px
returns the interval id to clear the movement */
    return setInterval(function() {
        el.style.left = parseInt(el.style.left) + px + "px";
    }, ms);
}
window.onload = function() {
    var im0 = document.images[0];
    var im1 = document.images[1];
    im0.onclick = function() {
        move(im0, 100, 1);
    };
    im1.onclick = function() {
        move(im1, 3000, 10);
    };
}

好吧,奇怪的是,你会每100毫秒和3000毫秒添加一次点击处理程序。你为什么要这样做?当你添加新的点击事件时,没有任何变化。我刚开始做java,我不知道还有什么更好的YethMM,那么这是怎么回事,我的教授给了我这个函数move(){var im=document.images[0];im.style.left=parseInt(im.style.left)+1+“px”}window.onload=function(){setInterval(“move();”,1000);}因为间隔中的函数每次都会移动元素。间隔从加载开始。顺便说一句:你可以让你的教授知道他是一个非常糟糕的程序员。。。(元素缓存,传递函数)