0

小さなjavascriptローダーを作ろうとしています。私のコード:

<?
//COUNT TOTAL PURCHASE INVOICES
$i = 0;
foreach($xml->tr as $purchase) 
{
    $i++;
}
$steps = 100 / $i;

$steps = str_replace(',', '.', $steps);


foreach($xml->tr as $purchase) 
{   
    ?>
    <script type="text/javascript" charset="utf-8">
    $(document).ready(function() 
    {
        var loaderValue = $("#loaderValue").val();
        newLoaderValue = parseFloat(loaderValue) + parseFloat("<?=$steps?>");

        $("#loaderValue").val(newLoaderValue);
        $(".connect_loader").width(newLoaderValue+"%");
    });
    </script>
    <?
}
?>

スクリプトは機能しましたが、問題は、php の準備が整った後に javascript が実行されるため、ローダーが 100% で 1 ステップになることです。

これを行う別の簡単な方法はありますか?

4

3 に答える 3

2

あなたの質問は少し混乱しています。

PHP はサーバー側と JavaScript クライアント側で使用されることを知っておく必要があります。

スクリプトは機能しましたが、問題は、php の準備が整った後に javascript が実行されるため、ローダーが 100% で 1 ステップになることです。

したがって、この動作は正常です。

やりたいことを実行する最善の方法は、Ajax 呼び出しを実行し、関数の結果に応じてローダーをインクリメントする Javascript 関数を作成することです。

于 2013-09-05T07:30:10.800 に答える
0

PHP はクライアントから見えません。サーバーはコードの PHP 部分を処理し、クライアントに表示される HTML ページを生成します。
これは、実行時に PHP を使用できないことを意味します。
必要な値を Javascript 変数に格納し、代わりにそれらを使用するようにしてください。
これを理解する簡単な方法は、Web ページのページ ソースを表示することです...結果の html コードを確認できます。

于 2013-09-05T07:38:06.903 に答える
-1

これがうまくいくことを願っています。

<?php
//COUNT TOTAL PURCHASE INVOICES
$i = 0;
foreach($xml->tr as $purchase) 
{
    $i++;
}
$steps = 100 / $i;

$steps = str_replace(',', '.', $steps);
?>
<script type="text/javascript" charset="utf-8">
    $(document).ready(function() 
    {
        for(var x = 0; x <= <?php echo $i ?>; x++){
            var loaderValue = $("#loaderValue").val();
            newLoaderValue = parseFloat(loaderValue) + parseFloat("<?php echo $steps ?>");

            $("#loaderValue").val(newLoaderValue);
            $(".connect_loader").width(newLoaderValue + "%");
        }
    });
</script>
于 2013-09-05T07:33:42.530 に答える