javascript - 复制和更改函数

标签 javascript dom-events

我这里有这段代码:

function slideDown(){
    //get the element to slide
    var sliding = document.getElementById('slideDiv'+x);

    //add 1px to the height each time
    sliding.style.height = parseInt(sliding.style.height)+5+'px';
    t=setTimeout(slideDown,15);
    if (sliding.style.height == "401px"){clearTimeout(t);}
}

获取元素slideDivx并增加其高度直到达到401px

我有 20 个这样的 div(每个称为 slideDiv1slideDiv2...),我想要的是 div 10开始,然后当它的高度达到大约 100px 时,我想要 9 和 11 开始,依此类推。

我尝试过 setInterval 并每次增加 x,但这不起作用,因为它会停止之前的 div 动画并移动在完成之前继续下一个。我想那是因为我正在改变这个功能,对吧?

我想知道的是,我是否必须为每组 div 复制该函数,或者我可以自动化吗?

我必须能够使用原生 JavaScript 而不是 jQuery 来完成这一切,因为这是一个大学项目。

最佳答案

听起来您只需要使用参数创建幻灯片,然后将元素集发送到数组中,如下所示:

 var elementIntervals = [];
 function animateElements(elementArray)
 {
     for(var j = 0; j < elementArray; j++)
     {
         (function(element, index)
         {
             elementIntervals[index] = setTimeout(function()
             {
                 slideDown(element, index);
             }, 15 + (100 * index));
         })(elementArray[j], j);
     }
 }

 function slideDown(sliding, index)
 {
     sliding.style.height = parseInt(sliding.style.height)+5+'px';

     if(sliding.style.height == "401px")
        clearTimeout(elementIntervals[index]);
     else
        elementIntervals[index] = setTimeout(function()
        {
            slideDown(sliding, index);
        }, 15);
 }

关于javascript - 复制和更改函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250002/

相关文章:

javascript - 未以 Node-Red 显示的其他 Node (Windows 8)

javascript - Jasmine 在 expect().toThrow 上抛出错误,而不是识别抛出的错误

javascript - Visual Studio 2017 不编译 typescript

javascript - 如何检测 firefox 扩展中的 firefox 启动事件?

javascript - 事件处理程序优先级并在某些情况下忽略其他处理程序

javascript - 计算下载时间并重复下载n次

javascript - 在 JavaScript 中,e.target 没有像我预期的那样工作

javascript - 重新加载网页后如何在 JavaScript 中保留多个表单值?

javascript - promise ,我在获取另一个函数的返回时遇到一些问题

jQuery - iPad/iPhone - 禁用滚动后启用滚动