功能改变div的值后颜色变化太慢

时间:2013-02-07 06:47:02

标签: jquery css colors

很难解释我的体验。代码检测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)"的功能,但没有成功。

我在这里俯瞰什么?我觉得这很简单,我只是脑力不足。

1 个答案:

答案 0 :(得分:1)

如果您希望在vote年div颜色更改之后,那么您应该调用函数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');
    }
}