当innerHTML 100%完成时调用Javascript函数的事件

当innerHTML 100%完成时调用Javascript函数的事件,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我在标题上快速搜索了一下,结果被这些我一个字都不懂的代码给砸了 我已经从事JavaScript编程两年了,对大多数概念都很熟悉。事件处理除外。这让我害怕 问题 我有一个div,我为它编写了一个脚本,它完全根据鼠标位置垂直滚动div 我得到容器的高度,以及将“溢出”的内部容器的高度 将它们分开得到一个“差分”,然后将鼠标位置乘以该差分,得到根据鼠标位置滚动的div 它给了我一个漂亮干净的卷轴 (如果有人想了解更多信息,请询问) 我的问题是。这个div的内容是由ajax生成的 因此,当运行计算内部和

我在标题上快速搜索了一下,结果被这些我一个字都不懂的代码给砸了

我已经从事JavaScript编程两年了,对大多数概念都很熟悉。事件处理除外。这让我害怕

问题

我有一个div,我为它编写了一个脚本,它完全根据鼠标位置垂直滚动div

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

将它们分开得到一个“差分”,然后将鼠标位置乘以该差分,得到根据鼠标位置滚动的div

它给了我一个漂亮干净的卷轴

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

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

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

因此,当ajax将数据复制到innerHTML时,我需要启动一个函数来调用mousescroll函数

额外的

问题:我有两个ajax调用填充可滚动div。有时一个在另一个之前获取,反之亦然。因此,我需要mousescroll函数在两个ajax调用都已将所有数据完全输入html时启动


我正在考虑添加一个setTimeout,但是。。。我不喜欢强迫我的脚本等待

我不是100%清楚问题出在哪里。您写道:“当ajax将数据复制到innerHTML以调用mousescroll函数时,我需要启动一个函数。”——您需要这方面的帮助吗?如果您使用的是jQuery,那么只需在
$.ajax
success
回调函数中调用mousescroll函数

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

伪代码:

var numOfAjaxCalls = 0;

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

根据您的描述,您需要在jQuery成功事件中处理ajax,然后在两个ajax事件完成并按照您的要求正确处理后,在代码中处理实际的“完成”事件。

您是否使用任何框架/库/实用程序函数进行ajax调用?即使我也在尝试使用相同的函数,我正在使用.NET4.0。好问题,解决方案会很有趣:)起初我不想依赖jquery,但在意识到我无法解决跨浏览器的依赖性后,我决定使用jquery-1.7.1。你应该更改你文章的标题,因为你没有谈论自定义Javascript事件(这意味着一些非常具体的事情)。我会自己编辑它,但我不完全确定它应该是什么:)对不起,搞混了。基本上,我需要在ajax获取数据后运行一个函数。然而。我的ajax函数获取大量json数据,对其进行解析,然后使用.innerHTML方法将解析后的数据插入到容器中,现在这种情况发生了两次。我想用“成功”命令启动这个功能,但是。。。成功事件是在收到ajax时触发的,还是在innerHTML函数完成时触发的?因为我真的需要确保在开火之前容器是满的。只有当请求成功时,才会调用“success”!Thanks@AlexMorley-Finch:我认为innerHTML是同步的,所以没有办法处于“innerHTML尚未完成”的状态@AlexMorley Finch-成功处理程序在ajax调用完成(并且成功)时启动。因此,您将在成功处理程序中解析JSON并注入HTML。