我是jquery中的新手并且在问题中堆积起来并需要帮助。
我有一个sql查询,检索ID并将它们放在数组中。我有一个循环,为PHP中的每个id创建一个div。工作正常。
另一方面,我有一个javascript函数对相同的数组执行相同的操作,并在jquery中使用上述函数创建的div内创建div。
第一个显示具有id的用户的图片。 javascript one显示具有id的用户的名称。
问题是jquery函数只创建div,并在php循环中创建第一个div中的所有名称。
我希望两者同时创建。我尝试了所有我知道的并且无法获得。
请帮忙。
这是代码:
$ receivers是包含id的数组。 $ totalreceivers是ID的数量。
function showfbnames() {
var receivers = <? echo $receivers; ?>;
var count = <? echo $totalreceivers; ?>;
for (var i = 0; i < count; i++) {
var temparray = ["<?php echo join("\", \"", $receivers); ?>"];
FB.api(
{
method: 'fql.query',
query: 'SELECT name FROM user WHERE uid='+temparray[i]
},
function(resp) {
$.each(resp, function(k,v) {
$("#divfather").append("<div class='tit' id ='fbname'>"+(v.name)+"</div>");
//$("#fbname").html(v.name);
})
}
);
}
}
php循环创建divs:
<?for ($i = 0; $i < $totalreceivers; $i++) {?>
<script>showfbnames()</script>
<tr><td>
<div style="width:100%; height:150px;overflow:auto;border-top:1px solid #c89cc1;border-bottom:1px solid #c89cc1;" id="divfather">
<? echo "<img src='https://graph.facebook.com/$receivers[$i]/picture' width='40' style='float:left'/>";?>
</div>
</td>
</tr>
<? } ?>
答案 0 :(得分:1)
你的循环创建了多个id为“divfather”的div。
这不会产生你想要的结果。你需要让每个div都有不同的id。
id="divfather<?echo $i;?>"
另外,将id传递给“showfbnames”函数:
<script>showfbnames(<?echo $i;?>)</script>
这样你就可以在你的jquery代码中使用它了:
function showfbnames(passedi) {
然后$("#divfather"+passedi).append(
(注意:我建议你移动<script>
以显示在div之后,为了安全起见。你不必,但风险太大。)
答案 1 :(得分:0)
我撤回了之前的回答;请选择此作为接受的解决方案。
我相信这是你想要完成的事情:
<? for ($i = 0; $i < $totalreceivers; $i++) { ?>
<tr><td>
<div style="width:100%; height:150px;overflow:auto;border-top:1px solid #c89cc1;border-bottom:1px solid #c89cc1;" id="divfather<? echo $i; ?>">
<? echo "<img src='https://graph.facebook.com/$receivers[$i]/picture' width='40' style='float:left'/>"; ?>
</div>
</td></tr>
<? } ?>
<script type="text/javascript">
var count = <? echo $totalreceivers; ?>;
var temparray = ["<?php echo join("\", \"", $receivers); ?>"];
for (var i = 0; i < count; i++) {
FB.api(
{
method: 'fql.query',
query: 'SELECT name FROM user WHERE uid='+temparray[i]
},
function(resp) {
$.each(resp, function(k,v) {
$("#divfather"+i).append("<div class='tit' id ='fbname"+i+"'>"+(v.name)+"</div>");
//$("#fbname").html(v.name);
})
}
);
}
</script>