首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JavaScript在页面完全加载后执行代码

使用JavaScript在页面完全加载后执行代码
EN

Stack Overflow用户
提问于 2011-08-26 22:43:58
回答 3查看 1.5K关注 0票数 0

我花了几个小时才让下面的代码正常工作。代码应该暂停,直到页面加载完成。我遇到的问题是AJAX是异步执行的。如何强制代码在执行前等待?

代码语言:javascript
运行
复制
var i = 1;
function On_Success(){

    i = i+1;
    if(i<=10){

    $('<div id="p'+i+'">b</div>').replaceAll('#b'); 
    $('#p'+i).load('tabelle.html');
    //here shoul be waited, til the page is loaded
    On_Success();
    };
    };

    function knopf(){
    $('body').append('<div id="p'+i+'">a</div>');
    $('#p'+i).load('tabelle.html'); 
    On_Success();
    };
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-26 22:45:17

.load接受在加载完成时运行的回调;您可以使用它来代替更冗长的jQuery.ajax函数,后者需要您编写额外的代码来填充您的元素。

代码语言:javascript
运行
复制
jQuery("#p", i).load("tabelle.html", function() {   
   //code to run when tabelle.html has finished loading
});

将您的代码更改为以下代码。它应该是有效的:

代码语言:javascript
运行
复制
var i = 1;

function On_Success() {

    i = i + 1;
    if (i <= 10) {
        $('<div id="p' + i + '">b</div>').replaceAll('#b');
        $('#p' + i).load('tabelle.html', On_Success);        
    };
};

function knopf() {
    $('body').append('<div id="p' + i + '">a</div>');
    $('#p' + i).load('tabelle.html', On_Success);
};

另外,在填充其他div之前,是否一定要等待一个加载完成?为什么你不能这样做:

代码语言:javascript
运行
复制
function On_Success() {
    var i = 0;
    while(i < 11) {
        $('<div id="p' + i + '">b</div>').replaceAll('#b');
        $('#p' + i).load('tabelle.html');        
    };
};

另外,我也不确定knopf函数在做什么。该函数中i的值应该是什么?你如何调用你的代码?

票数 0
EN

Stack Overflow用户

发布于 2011-08-26 22:45:39

Ajax和load都有一个successs函数,该函数可以在响应完全返回时运行。

代码语言:javascript
运行
复制
$.ajax({
        async: true,
        type: "GET",
        url: url,
        data: params,
        success: function(html){
                 //do stuff here
                 },
        error: handleAjaxErrors

    });

如果您想使用load,还有一个成功的回调:

代码语言:javascript
运行
复制
$("#myDiv").load('/ajax/data/get', function() {
  //do stuff here
});
票数 2
EN

Stack Overflow用户

发布于 2011-08-26 22:48:19

load函数有一个成功处理程序:

代码语言:javascript
运行
复制
$('#p'+i).load('tabelle.html', function() {
  On_Success();
});

只有在ajax调用成功完成并将所提供的内容添加到DOM之后,才会调用成功处理程序。

您可以在此处查看完整的文档:

http://api.jquery.com/load/

如果您还希望捕获客户端上的错误条件,则需要按照@Chris的回答使用完整的$.ajax调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7206439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档