我已经创建了一个函数,每当我的滑块的值被更改时都会被调用。问题在于该函数生成一个数组,稍后它将传递给其他函数。到目前为止,如此好,但滑块可能会被用户想要多次调整,正如我所说,这触发了生成数组的功能,这意味着我可以获得数百甚至数千个数组,而实际上我需要最后一个数组。这是我的代码:
function tg() {
$(".dot").remove();
var p, x, y, xo, yo, agl, spd, g, t = 1, isin2, angle1, n = 0, i = 1;
var m = [];
p = $("#ba").position();
xo = p.left;
yo = p.top;
spd = $("#spd").val();
agl = $("#agl").val();
g = $("#g").val();
angle1 = formula;
isin2 = true;
while (isin2) {
y = formula;
x = formula;
m.push([x, y]);
//...
t++;
isin2 = isin(x, y);
}
if (isin2 == false) {
$(".dot").last().remove();
m.pop([x, y]);
console.log(m);
}
activate(m);
}
滑块出现了,我实际上只给出了其中一个,因为剩下的两个是绝对副本,它们只是解决其他变量。
$(document).ready(function(){
$("#slagl").slider({
min:0,
max:89,
value:15,
range:"min",
slide: function(event, ui){
$("#agl").val(ui.value);
tg();
}
});
您可以很容易地看到它只是堆积新的和新的阵列而不清理其他阵列。目标是以某种方式删除所有其他冗余数组,在幻灯片上制作并且每次调用该函数时只留下最后一个。
答案 0 :(得分:1)
在与OP的私人对话中,我们发现数组实际上是正确生成的。问题放在activate(m);
中,每次滑块更改时都会调用它。在activate()
中,点击事件被分配给按钮,导致每次更新时都出现冗余点击事件。因此,无论何时单击按钮,它都将使用较旧的数组值执行其代码。
答案 1 :(得分:0)
请使用滑块的“更改”功能。当用户释放滑块的处理程序时,这只会被调用一次,相比之下,每次像素移动都会调用“slide”回调。
答案 2 :(得分:0)
您应该使用滑块change
功能或使用一些去抖动:
$(document).ready(function(){
var timer;
$("#slagl").slider({
min:0,
max:89,
value:15,
range:"min",
slide: function(event, ui){
$("#agl").val(ui.value);
if(timer) {
clearTimeout(timer);
}
timer = setTimeout(tg, 500);
}
});
});
将值500
更改为适合您的用例的任何内容。