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

хммм, то как же это технические работы, мой профессор дал мне эту –

+0

функцию перемещения() { \t \t вар им = документ .images [0]; \t \t im.style.left = parseInt (im.style.left) +1+ "px"; \t} \t window.onload = функция() { \t \t setInterval ("двигаться();", 1000); \t} –

+0

Поскольку функция в интервале действительно перемещает элемент каждый раз. И интервал начинает загружаться. BTW: Вы можете сообщить своему профессору, что он очень плохой кодер ... (кеширование элементов, передача функции) – 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

Это работало отлично слишком –