2013-02-11 29 views
3

目的: vote.php將每個帖子的投票限制爲每個IP一個。 jQuery檢查舊投票值與新投票值的比較結果。如果投票增加,照片會改變。如果投票減少,圖片會改變。如果投票沒有改變,圖片保持默認。比較不適用於第一個電話

問題:即使值相等(使用window.alert檢查),腳本仍會在第一次運行時更改圖像。第一次運行後的所有執行都按預期工作。

有問題的代碼:

if (window.f != voteTotal.text()) { 
//alert place here. voteTotal.text() && window.f are equal 
if (votetype == "up") { 

$('.bg').attr('src', 'tear.gif'); 
window.t=setTimeout('changeBack()', 3000); 
} 

else if (votetype =="down") { 
$('.bg').attr('src', 'happy.gif'); 
window.t=setTimeout('changeBack()', 3000); 
} 
else { 
changeBack(); 
} 
} 
else if(window.f == voteTotal.text()){ 
changeBack(); 
} 
else { 
changeBack(); 
} 

變種f的聲明的功能之外,只要功能是通過在投票選項,用戶點擊稱爲給定值。

全碼:

var t; 
var f; 

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



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



if (window.f != voteTotal.text()) { 

if (votetype == "up") { 

$('.bg').attr('src', 'tear.gif'); 
window.t=setTimeout('changeBack()', 3000); 
} 

else if (votetype =="down") { 
$('.bg').attr('src', 'happy.gif'); 
window.t=setTimeout('changeBack()', 3000); 
} 
else {changeBack();} 
} 
else if(window.f == voteTotal.text()){ 
changeBack(); 
} 
else { 
changeBack(); 
} 

} 



function changeBack() { 
$('.bg').attr('src', 'bg.gif'); 

} 

所以,我在哪裏出了錯?


此代碼是在我的頭標記中了header.html。你看到的是.js文件。這就是全部。

if (window.f == voteTotal.text()) {window.alert('They are equal');} 
else { window.alert('They are not equal: ' + voteTotal.text() + ' ' +window.f); } 

I am completely confused

它的工作原理,只是沒有第一時間通過。

Second time clicking on the same div

+0

您的JavaScript位於您的正文標籤之前嗎?你在jQuery的ready()中運行你的JS嗎? – 2013-02-11 23:36:20

+0

添加了第二個編輯。我正在頭腦中運行JS。我沒有準備好(),並且happy.gif和tear.gif沒有被緩存。 – Dan88 2013-02-11 23:41:47

+0

你可以將它移動到頁面底部嗎? – 2013-02-11 23:44:46

回答

0

因爲你是從HTML元素讓你的總票數,首先嚐試修剪它。 由於它只在第一次運行時執行此操作,因此可能會出現某些HTML標記中特定元素的標記,我會在其中進行更改。我親自從服務器獲得投票計數。

我也修剪了一些關於colorchange功能的東西。

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

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

if (window.f != $.trim(voteTotal.text())) {   
//alert place here. voteTotal.text() && window.f are equal 
    if (votetype == "up") { 

     $('.bg').attr('src', 'tear.gif'); 
     window.t=setTimeout('changeBack()', 3000); 
    } 

    else if (votetype =="down") { 
     $('.bg').attr('src', 'happy.gif'); 
     window.t=setTimeout('changeBack()', 3000); 
    } 


}else { 

    changeBack(); 

}//if 
}//changeColor 
+0

當我修剪()它不會更改任何情況下的圖像。 div由vote.php設置的表格命名爲Vote +他們的ID。在每個ID的第一次執行後,原始的預期工作。我不知道爲什麼它在第一次執行時不起作用。 – Dan88 2013-02-12 02:04:05

相關問題