2012-05-20 38 views
0

嗨我已经写了这段代码,它假设在点击对象后每3000毫秒移动一次对象,但有些时间它不工作,有人可以告诉我我是什么做错了,我只是在学习javascript;非常感谢你JavaScript SetInterval()单击后不工作

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); 
} 
+0

好吧,这很奇怪,你会每100和3000毫秒添加点击处理程序。 –

+0

你为什么要这样做?添加新的点击事件时没有任何变化。 – epascarello

+0

我刚开始做java的,我不知道任何更好的 –

回答

2

你这样做是相反的。每点击3000毫秒,您就可以将图像移动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); 
    }; 
} 
+0

嗯,那怎么走到这wroks,我的教授给了我这个 –

+0

功能移动(){ \t \t VAR IM =文件.images [0]; \t \t im.style.left = parseInt(im.style.left)+1+“px”; \t} \t的window.onload =函数(){ \t \t的setInterval( “移动();”,1000); \t} –

+0

因为间隔中的函数每次都会真正移动元素。时间间隔开始加载。顺便说一句:你可以让你的教授知道他是一个非常糟糕的编码器......(元素缓存,传递函数) – Bergi

0

你的移动功能注册图片点击,但实际上并没有做任何移动,直到用户点击。你想要的更多是这样的:

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); 
    } 
} 
+0

非常感谢您 –

+0

这个完美工作太 –