0

出力されるデータベース結果ごとにランダムな div 幅を生成しようとしています。

コードはループの外にあるときに機能しますが、すべての div は同じ「ランダム」幅です。

  • ページを読み込み、すべての div は 200px です
  • ページを更新すると、すべての div が 150px になります
  • ページを更新すると、すべての div が 250px になります ...など。

問題は、個々の div をすべて同じランダムな幅ではなく、ランダムな幅にする必要があることです...そのため、データベースが毎回新しい「ランダムな」幅を取得するために、ループ内に JavaScript を追加しました。値が出力されます。

そしてもちろん、それは機能していません!

<?php 
            $result = mysql_query("SELECT * from tbl_status ORDER BY tbl_status.date desc");

            while($row = mysql_fetch_array($result))
                    {
                        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
                        <script>
                        $(document).ready(function(){
                            var x = Math.floor((Math.random()*150)+150);
                            $('.statusCont').width(x+'px');
                        });
                        </script>

                        echo'
                    <div class="statusCont">
                        <div class="statusUsr">Tom Adams - Newcastle</div>
                        <div class="statusTxt"><p>' . $row['status'] . '</p></div>
                    </div><!-- ends .statusCont -->
                    ';}
            ?>
4

1 に答える 1

0

すべての div のランダムな幅が同じである理由は、jquery クラス セレクター$('.statusCont')がそのクラスのすべての要素を返すためです。したがって、ループが最後のセレクターを出力すると、以前にロードされたすべての要素に適用されます。

PHPループにjavascriptを含める代わりに、whileロード後にページに影響を与えるスクリプトを頭に書くことができます

$(document).ready(function () {
    $('.statusCont').each(function () {
        var x = Math.floor((Math.random() * 150) + 150);
        $(this).width(x);
      });
 );
于 2013-10-03T19:18:01.767 に答える