删除函数生成的数组

时间:2015-08-22 18:31:12

标签: javascript jquery arrays google-chrome

我已经创建了一个函数,每当我的滑块的值被更改时都会被调用。问题在于该函数生成一个数组,稍后它将传递给其他函数。到目前为止,如此好,但滑块可能会被用户想要多次调整,正如我所说,这触发了生成数组的功能,这意味着我可以获得数百甚至数千个数组,而实际上我需要最后一个数组。这是我的代码:

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();
        }
    });

That's the what console.log() returns for m

您可以很容易地看到它只是堆积新的和新的阵列而不清理其他阵列。目标是以某种方式删除所有其他冗余数组,在幻灯片上制作并且每次调用该函数时只留下最后一个。

3 个答案:

答案 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更改为适合您的用例的任何内容。