我对标题进行了快速的Google搜索,并把所有我不懂的代码都打了水漂。

我从事JavaScript编程已有两年了,对大多数概念都很满意。除了事件处理。吓到我了!

问题

我有一个div,我为此编写了一个脚本,该脚本完全基于鼠标位置垂直滚动div。

我得到了容器的高度,以及将“溢出”的内部容器的高度。

将它们除以得到一个“微分”,然后将鼠标位置乘以该微分,以使div根据鼠标位置滚动。

它给了我一个很好的干净滚动!

(如果有人想了解更多信息,请问)

我的问题是。该div的内容由ajax生成。

因此,当运行用于计算内部和外部div高度的代码时,它给出了不正确的高度,因为它们尚未被数据填充。

所以我需要在ajax将数据复制到innerHTML时触发一个函数来调用mousescroll函数。

额外

问题:我有两个可填充div的ajax调用。有时一个被抢先,反之亦然。因此,我需要mousescroll函数来触发WHEN,只有当两个Ajax调用已将所有数据完全输入到html中时,才可以触发它!

我本来只是想添加setTimeout,但...我不喜欢强迫我的脚本等待!

最佳答案

我不清楚问题出在哪里。您写道:“当ajax将数据复制到innerHTML以调用mousescroll函数时,我需要触发一个函数。” -您需要这部分的帮助吗?如果使用的是jQuery,则只需在success$.ajax回调函数内部调用mousescroll函数。

但是,正如您所指出的那样,这会因您提出的另一个问题而变得复杂:实际上有两个Ajax调用,并且您希望它们在调用mousescroll函数之前都完成。要解决此问题,只需创建一个等于零的变量,然后在两个success回调中将其递增。这些回调还将检查变量的值,如果该值等于1(表示Ajax调用已完成),则调用mousescroll函数。

伪代码:

var numOfAjaxCalls = 0;

$.ajax({
    ...
    success: function(){
        if(numOfAjaxCalls = 1){
            mousescroll();
        }else{
            numOfAjaxCalls++;
        }
    }
});

09-10 11:36
查看更多