0

Web ページに 1 回だけループする gif があり、クリックするたびに (onclick 効果を使用して) リロードするように設定しました。この onclick 効果には、GIF の持続時間である 800 ミリ秒のクールダウンを与えたので、完成するまで GIF をリロードすることはできません。また、この gif にクリックカウンター効果を追加して、クリックされるたびにカウンターに +1 を広告するようにしました。精度と品質のために、クリックカウンター効果に 800 ミリ秒のクールダウンを与えました。つまり、0.8 秒ごとに (+1) 以上追加することはできません。次のスクリプトを使用しました。

Javascript

<script>
$(function(){
    var update_count = function () {
        $('#count-block').html("<h3><b>The rabbit has jumped " + image.click_count + " meters.</b></h3>");
    }
    var image = new Image();
    image.in_action = false;
    image.duration = 800;
    image.click_count = 0;
    update_count();
    image.src ='transparent.gif';
    $('#img').click(function(){
        if (!image.in_action) {
           image.in_action = true;
           image.click_count += 1;
           update_count();
           $(this).attr('src',image.src);
            window.setTimeout(function() {
                image.in_action = false;
            }, image.duration);

        }
    });
});
</script>

私のウェブページへのこのリンクからわかるように、これはうまく機能しますが、クリックカウンター効果を普遍的にしたいと考えています。これが意味することは、クリックをフォルダー (おそらくデータベースのメインフォルダー) に保存して、すべてのクリックが相互に考慮されるようにしたいということです。つまり、クリックが積み重なっていきます。たとえば、私がボタンを 10 回クリックし、別の誰か (まったく別のコンピューター/ネットワーク/エリア) がボタンを 12 回クリックすると、合計クリック数は 22 になります。

ここに私のウェブページへの JSFiddle リンクがあります。

私はスクリプトや HTML などにかなり慣れていないので、大まかな説明が必要です。スタイルシートやサードパーティの要素/フォルダーなどを含むもの (このプロジェクトで必要と思われるもの) をまだ試していないので、そのプロセスについて教えていただければ幸いです。

必要に応じて、さらに詳細に進み、好みを詳しく説明します。JSFiddle リンクを自由に使用して、現在の状態の Web ページをチェックしてください。

事前にすべてに感謝します!

(ちなみに、私のデータベースはPHPを実行しています)

4

1 に答える 1

0

これが私の提案であり、テストしていないため、100%機能するかどうかはわかりませんが、jQueryを使用して非表示の入力フィールドを作成します(最初の関数に基づいて使用しているライブラリであると想定しています)。

$("#img").append("<input type='hidden' name='counter' id='counter' value='" +image.click_count +"' />

次に、PHP で、入力フィールドの値を投稿します。次に、その値をデータベースに挿入します。たとえば、

PHP

    $counter = $_POST["counter"];
    **INSERTING THE CLICK COUNTS**
    mysqli_query($dbconnection, "INSERT INTO 'clicks'(`clicks`) VALUES('" .$counter ."');

$query = mysqli_query($dbconnection, "SELECT SUM(clicks) AS 'Clicks' FROM 'clicks');
while($row = mysqli_fetch_assoc($query){
    $clickNumber = "{$row['clicks']}";
}

もちろん、これは単なる「ラフ ドラフト」であり、必要に応じて変更する必要がありますが、これで作業を開始できます。また、テーブルとフィールドの名前をデータベースにあるものに置き換える必要がありますが、これが一般的な考え方です。

于 2014-10-27T20:51:07.663 に答える