在php循环创建div时动态创建div

时间:2011-08-09 13:09:01

标签: php jquery

我是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>
            <? }    ?>

2 个答案:

答案 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>