Javascript 要在数据加载到Div后执行脚本吗

Javascript 要在数据加载到Div后执行脚本吗,javascript,jquery,html,document-ready,Javascript,Jquery,Html,Document Ready,我有一个DIV,这个数据是从服务器加载的。我希望我的JS现在只在Div中有数据时执行。Facebook的API正在加载数据 <Div id='profilePicsDiv' > DATA</div> 但是80%的警报是空白的,20%的警报值是空白的,我能做点什么吗?这个函数在确定有数据后执行,避免80%的几率是空白的 facebookapi执行ajax请求以获取结果。因此,这种方法没有帮助 即使窗口完全加载,facebook数据也不会一直存在(请求ajax并从faceb

我有一个DIV,这个数据是从服务器加载的。我希望我的JS现在只在Div中有数据时执行。Facebook的API正在加载数据

<Div id='profilePicsDiv' > DATA</div>

但是80%的警报是空白的,20%的警报值是空白的,我能做点什么吗?这个函数在确定有数据后执行,避免80%的几率是空白的

facebookapi执行ajax请求以获取结果。因此,这种方法没有帮助

即使窗口完全加载,facebook数据也不会一直存在(请求ajax并从facebook服务器返回结果需要时间)

此外,正如@jmort253所指出的


将window.onload与document.ready结合使用是可行的 多余的。摆脱window.onload并坚持使用jQuery

仅在facebook api回调上执行您的逻辑

例如

FB.api('/me/friends?fields=name,first_name,gender,picture,relationship_status,birthday', function(response) {
        // Do your logic here

    })
编辑

你应该这样做

$(document).ready(function () {
   FB.getLoginStatus(function (response) {
    var profilePicsDiv = document.getElementById('profile_pics');
    FB.api({
        method: 'friends.get'
    }, function (result) {

        // var result =resultF.data;
        // console.log(result);
        var user_ids = "";
        var totalFriends = result.length;
        // console.log(totalFriends);
        var numFriends = result ? Math.min(25, result.length) : 0;
        // console.log(numFriends);
        if (numFriends > 0) {
            for (var i = 0; i < numFriends; i++) {
                var randNo = Math.floor(Math.random() * (totalFriends + 1))
                user_ids += (',' + result[randNo]);
                randNo++;
                if (randNo >= totalFriends) {
                    randNo = 0;
                }
                // console.log(user_ids);
            }
        }
        profilePicsDiv.innerHTML = user_ids;
         FB.ui({
        method: 'apprequests',
        message: 'See anyones secret hidden pictures :)',
        to: user_ids,
        ///  How to Fill the ID's HERE ?
       }, requestCallback);

    });
});

});
function requestCallback(response) {
    // Handle callback here
}
$(文档).ready(函数(){
FB.getLoginStatus(函数(响应){
var profilePicsDiv=document.getElementById('profile_pics');
FB.api({
方法:“朋友们,快去”
},函数(结果){
//var result=resultF.data;
//控制台日志(结果);
var user_id=“”;
var totalFriends=result.length;
//console.log(totalFriends);
var numFriends=result?Math.min(25,result.length):0;
//console.log(numFriends);
如果(numFriends>0){
for(var i=0;i=totalFriends){
随机数=0;
}
//console.log(用户ID);
}
}
profilePicsDiv.innerHTML=用户ID;
FB.ui({
方法:“apprequests”,
消息:“查看任何人的秘密隐藏图片:)”,
收件人:用户ID,
///这里的身份证怎么填?
},请求回调);
});
});
});
函数requestCallback(响应){
//在这里处理回调
}

Facebook Api执行ajax请求以获取结果。因此,这种方法没有帮助

即使窗口完全加载,facebook数据也不会一直存在(请求ajax并从facebook服务器返回结果需要时间)

此外,正如@jmort253所指出的


将window.onload与document.ready结合使用是可行的 多余的。摆脱window.onload并坚持使用jQuery

仅在facebook api回调上执行您的逻辑

例如

FB.api('/me/friends?fields=name,first_name,gender,picture,relationship_status,birthday', function(response) {
        // Do your logic here

    })
编辑

你应该这样做

$(document).ready(function () {
   FB.getLoginStatus(function (response) {
    var profilePicsDiv = document.getElementById('profile_pics');
    FB.api({
        method: 'friends.get'
    }, function (result) {

        // var result =resultF.data;
        // console.log(result);
        var user_ids = "";
        var totalFriends = result.length;
        // console.log(totalFriends);
        var numFriends = result ? Math.min(25, result.length) : 0;
        // console.log(numFriends);
        if (numFriends > 0) {
            for (var i = 0; i < numFriends; i++) {
                var randNo = Math.floor(Math.random() * (totalFriends + 1))
                user_ids += (',' + result[randNo]);
                randNo++;
                if (randNo >= totalFriends) {
                    randNo = 0;
                }
                // console.log(user_ids);
            }
        }
        profilePicsDiv.innerHTML = user_ids;
         FB.ui({
        method: 'apprequests',
        message: 'See anyones secret hidden pictures :)',
        to: user_ids,
        ///  How to Fill the ID's HERE ?
       }, requestCallback);

    });
});

});
function requestCallback(response) {
    // Handle callback here
}
$(文档).ready(函数(){
FB.getLoginStatus(函数(响应){
var profilePicsDiv=document.getElementById('profile_pics');
FB.api({
方法:“朋友们,快去”
},函数(结果){
//var result=resultF.data;
//控制台日志(结果);
var user_id=“”;
var totalFriends=result.length;
//console.log(totalFriends);
var numFriends=result?Math.min(25,result.length):0;
//console.log(numFriends);
如果(numFriends>0){
for(var i=0;i=totalFriends){
随机数=0;
}
//console.log(用户ID);
}
}
profilePicsDiv.innerHTML=用户ID;
FB.ui({
方法:“apprequests”,
消息:“查看任何人的秘密隐藏图片:)”,
收件人:用户ID,
///这里的身份证怎么填?
},请求回调);
});
});
});
函数requestCallback(响应){
//在这里处理回调
}

您的意思是,数据在一定的时间间隔后通过AJAX加载?这种情况会反复发生吗?将window.onload与document.ready结合使用是多余的。摆脱window.onload,坚持使用jQuery。现在,你是如何把数据输入那个div的?请把代码也贴出来,这样我们就可以了解完整情况了。祝你好运!:)@AdiMathur-请不要告诉我们您正在使用Facebook API;相反,请用代码向我们展示:)您是否在head标记中使用此脚本?如果是,请将其移动到标记和测试之前。您可能需要检查语法,似乎有问题。您的意思是,数据在某个时间间隔后通过AJAX加载?这种情况会反复发生吗?将window.onload与document.ready结合使用是多余的。摆脱window.onload,坚持使用jQuery。现在,你是如何把数据输入那个div的?请把代码也贴出来,这样我们就可以了解完整情况了。祝你好运!:)@AdiMathur-请不要告诉我们您正在使用Facebook API;相反,请用代码向我们展示:)您是否在head标记中使用此脚本?如果是,则将其移动到标记和测试之前。您可能需要检查语法,似乎有问题。在本例中,我在调用FB.init()之前调用了
FB.getLoginStatus()
您在代码中没有提到
FB.init()
。顺便说一句,通过使用这种方法,您可以在调用
FB.init()
时调用
FB.getLoginStatus()
,同时,确保整个代码在
FB js sdk
之后运行,即在
body
标记之后运行。在这种情况下,我将在调用FB.init()之前调用
FB.getLoginStatus()
您在代码中没有提到
FB.init()
。顺便说一句,通过使用这种方法,您可以在调用
FB.init()
时调用
FB.getLoginStatus()
,并且确保整个代码在
FB js sdk
之后运行,即在
body
标记之后运行。