2012-05-20 93 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

這個完美工作太 –