这是代码。此代码从Facebook获取好友列表。每个朋友都有name
和id
对。我使用response["data"]
得到此内容并将其存储在friends
中。
当我打印friends
时,我会得到以下内容:
首先
if(loggedIn) {
FB.api("/me/friends",function(response){
friends = response["data"];
totalToBeLoaded = friends.length;
document.getElementById("status").innerHTML=friends;
});
输出结果为:
[object Object],[object 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象],[对象对象],[对象 对象]
第二 如果我这样改变上面的代码:
if(loggedIn) {
FB.api("/me/friends",function(response){
friends = response["data"];
totalToBeLoaded = friends.length;
document.getElementById("status").innerHTML=friends[0].id;
});
它打印出来。 id位于0位置
输出:
1243533622(ID)
第三
如果我把它放在while-loop
并打印所有内容,那么会有更多的ID:
if(loggedIn) {
FB.api("/me/friends",function(response){
friends = response["data"];
totalToBeLoaded = friends.length;
while(i<totalToBeLoaded)
document.getElementById("status").innerHTML=friends[i].id;
});
输出:
什么都没打印。
如何打印所有id
?
答案 0 :(得分:4)
部分问题是你的循环
totalToBeLoaded = friends.length;
while(i<totalToBeLoaded)
document.getElementById("status").innerHTML=friends[i].id;
i
的值永远不会改变。你可能想要像这样重写循环:
for( var i=0, j=friends.length; i < j; i++) {
document.getElementById("status").innerHTML += friends[i].id + '<br />';
}
注意+= friends[i].id
。这将追加当前ID到 status 元素,而不是每次都覆盖当前值。这可能会让您更容易看到发生了什么。
答案 1 :(得分:0)
你需要创建一些HTML来显示它们(目前你每次都要替换html),然后遍历列表(目前你没有递增循环计数器)。
var i, htmlList = "<ul>";
for (i = 0; i < totalToBeLoaded; i++) {
htmlList += "<li>" + friends[i].id + "</li>";
}
htmlList += "</ul>";
document.getElementById("status").innerHTML = htmlList;