jquery - 函数更改 div 的值后颜色变化太慢

标签 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)",但没有成功。

我在这里忽略了什么?我觉得这很简单,我只是脑残了。

最佳答案

如果你想在 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');
    }
}

关于jquery - 函数更改 div 的值后颜色变化太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14745230/

相关文章:

javascript - 高于 VMR9 时 HTML 闪烁

javascript - 为什么加载的元数据不能持续触发

javascript - jQuery 如果 div 包含文本,切换按钮

css - 如何显示行的交替红色和绿色?

javascript - 使用纯 JavaScript 更改链接并使用复合 CSS 选择来选择元素

javascript - 为对话框获取值

html - 元素的位置固定并使 div 居中

java - 更改单元格颜色而不更改其他单元格中的颜色(Jtable)

c# - WPF RichTextBox 附加彩色文本

css - 更改链接下划线颜色而不是字体颜色(底部边框不适用于所有浏览器)