08.10.2015, 20:41
|
Новичок на форуме
|
|
Регистрация: 08.10.2015
Сообщений: 6
|
|
Повторный вызов функции
Привет.
Не получается вызвать функцию повторно, чтобы при каждом нажатии выводился массив globalArray по порядку с использованием метода setInterval(); Почему то выводится один раз.
http://jsfiddle.net/awosdsL6/1/
$(function() {
var arr01 = ['a1', 'a2', 'a3', 'a4'],
arr02 = ['b1', 'b2', 'b3', 'b4'],
arr03 = ['c1', 'c2', 'c3', 'c4'],
globalArray = [arr01, arr02, arr03];
var i = 0, k = 0, n = 0;
$("#next").click(function() {
if (i < globalArray.length) {
if (k < globalArray[n].length) {
setInterval(function() {
$("#matrix").append(globalArray[n][k]);
k++;
},200);
}
i++;
/* } else {
i = 0;
if (i < globalArray.length) {
if (k < globalArray[n].length) {
setInterval(function() {
$("#matrix").append(globalArray[n][k]);
k++;
},200);
}
i++;*/
}
});
});
Вот здесь все работает
http://jsfiddle.net/c3rggsot/
$(function() {
var arr01 = ['a1', 'a2', 'a3', 'a4'],
arr02 = ['b1', 'b2', 'b3', 'b4'],
arr03 = ['c1', 'c2', 'c3', 'c4'],
globalArray = [arr01, arr02, arr03];
var i = 0;
$("#next").click(function(){
if (i < globalArray.length) {
document.getElementById("info").innerHTML = globalArray[i];
i++;
} else {
i = 0;
document.getElementById("info").innerHTML = globalArray[i];
i++;
}
});
});
|
|
08.10.2015, 20:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от rvsbox
|
с использованием метода setInterval();
|
лучше не убивать комп, попробуйте придумать алгоритм без setInterval();
|
|
08.10.2015, 21:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
rvsbox,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.my{
font-size: 4em;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
var arr01 = ["a1", "a2", "a3", "a4"],
arr02 = ["b1", "b2", "b3", "b4"],
arr03 = ["c1", "c2", "c3", "c4"],
globalArray = [arr01, arr02, arr03],
len = globalArray.length,
i = 0,
timer;
function fn(n, k) {
$("#info").text(n.slice(0, k));
if (k++ < n.length) timer = window.setTimeout(function() {
fn(n, k)
}, 200)
}
$("#next").click(function() {
window.clearTimeout(timer);
fn(globalArray[i].slice(0), 1);
i = ++i % len
})
});
</script>
</head>
<body>
<button id="next">next</button>
<div id="info"></div>
</body>
</html>
|
|
09.10.2015, 04:59
|
Новичок на форуме
|
|
Регистрация: 08.10.2015
Сообщений: 6
|
|
спасибо, но сделал по другому
http://jsfiddle.net/uu064upk/3/
$(function() {
var arr01 = ['a1', 'a2', 'a3', 'a4'],
arr02 = ['b1', 'b2', 'b3', 'b4'],
arr03 = ['c1', 'c2', 'c3', 'c4'],
globalArray = [arr01, arr02, arr03];
var k = 0, j = 0;
wer = function() {
for (var i = 0; i < globalArray[k].length; i++ ) {
$("#matrix").text("");
setTimeout(function (j) {
$("#matrix").append(globalArray[k-1][j]);
}, i * 200, i); // x*1000 skol'ko vsego vremeni potrebuetsja, x - parametr
}
}
$("#next").click(function() {
if (k < globalArray.length) {
wer();
k++;
} else {
k = 0;
wer();
k++;
}
});
});
|
|
09.10.2015, 06:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
rvsbox,
нажмите быстро кнопку несколько раз в 3 сообщении и в вашем варианте.
|
|
09.10.2015, 10:27
|
Новичок на форуме
|
|
Регистрация: 08.10.2015
Сообщений: 6
|
|
я так понимаю это из-за setTimeout()??
|
|
09.10.2015, 10:44
|
Новичок на форуме
|
|
Регистрация: 08.10.2015
Сообщений: 6
|
|
не могук прикрутить
window.clearTimeout(timer);
именно в моем коде.
Понимаю что у меня неудачный скрипт и больше строк, но это необходимо для понимания действия алгоритма
|
|
09.10.2015, 10:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
rvsbox,
у вас куча таймеров их сложно остановить все сразу, почти ваш первоначальный вариант, выстреливает очередь таймеров, только в первоначальном коде очереди ещё бесконечные и накладываются друг на друга.
вы создаёте очереди вместо того, чтобы дождаться исполнения текущего действия, функции в очереди могут и не понадобится, но уже запущены на исполнение. проще отменить один таймер, чем кучу на разных этапах.
Последний раз редактировалось рони, 09.10.2015 в 11:08.
|
|
|
|