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

如果你想在你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');
    }
}
于 2013-02-07T06:53:34.640 回答