0

私が経験していることを説明するのは難しいです。このコードは、div タグの値を検出します。値が 0 未満、0、またはゼロより大きい場合。別の色に変わります。ただし、それは遅れています(-1はまだ灰色、0は緑または赤のいずれかになりますが灰色ではありません、1は灰色になります)

function vote(vote_id, votetype) {

    $.post('vote.php', {
        id: vote_id,
        type: votetype
    },

    function (output) {
        $('#vote' + vote_id).html(output).show();


    });
    colorChange(vote_id);
}

function colorChange(vote_id) {
    var voteTotal = $('#vote' + vote_id);

    if (voteTotal.text() < 0) {
        voteTotal.css('color', '#800000');
    } else if (voteTotal.text() == 0) {
        voteTotal.css('color', '#333333');
    } else if (voteTotal.text() > 0) {
        voteTotal.css('color', '#32cd32');
    } else {
        voteTotal.css('color', '#333333');
    }

}

vote.php は、投票の種類に基づいてデータベースを更新し、データベース内の新しい値を関数に返します。

関数が完全に閉じられるまで、関数は完了せず、値を更新しないようです。使用している onClick で関数を分離しようとしましたonClick="vote(x,y);colorChange(id)"が、成功しませんでした。

私はここで何を見落としていますか?私はそれが単純で、頭がおかしいだけだと感じています。

4

1 に答える 1

1

divの色を変更した後でそれが必要な場合は、次のようなvote関数を呼び出す必要があります。colorChange

function vote(vote_id, votetype) {

   $.post('vote.php', {id: vote_id, type: votetype },
     function(output) {
        $('#vote' + vote_id).html(output).show();
        colorChange(vote_id);    
     });    
}

そして、のコードcolorChangeはに変更することができます

function colorChange(vote_id) {
    var voteTotal = $('#vote' + vote_id);
    if (voteTotal.text() < 0) {
        voteTotal.css('color', '#800000');
    }
    else if (voteTotal.text() > 0) {
        voteTotal.css('color', '#32cd32');
    }
    else {
        voteTotal.css('color', '#333333');
    }
}
于 2013-02-07T06:53:34.640 に答える