2013-02-07 19 views
0

值很難解釋我正在經歷什麼。代碼檢測div標籤的值。如果該值低於0,0或大於零;它變成不同的顏色。它是什麼,雖然做的是它是滯後(-1仍然是灰色,0將是綠色或紅色,但不是灰色的,1將是灰色)功能變化後顏色變化太慢div

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

我在這裏忽略了什麼?我覺得這很簡單,我只是braindead。

回答

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'); 
    } 
} 
+0

我有這些空間中該功能,因爲我試過。我一定錯過了分號或其他東西。你有魔力。謝謝,羅漢。 – Dan88