2013-09-17 3 views
3

http://jsfiddle.net/U9v2H/2/Looping что-то, удерживая мышь

Я хочу цифры, чтобы увеличить каждые 100 мс, удерживая нажатой кнопку мыши. Что я делаю неправильно?

var i = 1; 
$("#plus1").mousedown(function() { 
    loopthis = setinterval(repeatingfunction(), 100); 
}).mouseup(function() { 
    clearInterval(loopthis); 
}); 

function repeatingfunction() { 
    $("#testarea").append(i); 
    i = i + 1; 
} 
+2

Это '' не setInterval' setinterval' –

+1

для начала это setInterval –

ответ

2

подмигнули пишется setInterval, вы также вызвать repeatingfunction перед тем setInterval работает. Я не думаю, что вы хотите добавить новую TextNode, но заменяя старое значение с новым:

var i = 1, loopthis; 
$("#plus1").mousedown(function() { 
    loopthis = setInterval(repeatingfunction, 100); 
}).mouseup(function() { 
    clearInterval(loopthis); 
}); 

function repeatingfunction() { 
    $("#testarea").text(i); 
    i = i + 1; 
} 

Example

3

Вы вызова функции вместо назначения ссылки на него при вызове setInterval (вы также пропустил прописную букву I). Это:

loopthis = setinterval(repeatingfunction(), 100); 

должно быть:

loopthis = setInterval(repeatingfunction, 100); 

В исходном коде это немедленно выполнение repeatingfunction (потому что это то, что () делает), а затем передавая значение, возвращаемое этой функцией (ничего) будет выполняться при интервал вверх.

2

большой я на setInterval и repeatingfunction не должны иметь() после того, как

loopthis = setInterval(repeatingfunction, 100); //notice setInterval and repeatingfunction() 

DEMO

1

Объем loopthis потребности быть глобальным, поскольку она была не определена внутри обработчика mouseup событий. setinterval необходимо было заменить на setInterval и передать анонимную функцию. Также вместо добавления значения i измените htmldiv.

Javascript

var i = 1; 
var loopthis = {}; 
$("#plus1").mousedown(function() { 
    loopthis = setInterval(function(){repeatingfunction()}, 100); 
}).mouseup(function() { 
    clearInterval(loopthis); 
}); 

function repeatingfunction() { 
    $("#testarea").html(i); 
    i = i + 1; 
} 

JS Fiddle:http://jsfiddle.net/U9v2H/16/

2

Live Demo

var i = 1; 
$("#plus1").mousedown(function() { 
    loopthis = setInterval(repeatingfunction, 100); 
}).mouseup(function() { 
    clearInterval(loopthis); 
}); 

function repeatingfunction() { 
    $("#testarea").append(i); 
    i = i + 1; 
} 
+0

Единственное, что я могу видеть, что цифры, добавленными 'testarea'. '.text()' выглядит намного приятнее :) [см.] (http://jsfiddle.net/U9v2H/18/) –

1

Есть две проблемы с вашим яваскрипта кодом.

1) setinterval shouold быть setInterval

2) loopthis = setInterval(repeatingfunction(), 100); должно быть loopthis = setInterval(repeatingfunction, 100);

Обратите внимание на () в repeatingfunction() не требуется.

Вот jsfiddle

Смежные вопросы