目的: 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); }
它的工作原理,只是沒有第一時間通過。
您的JavaScript位於您的正文標籤之前嗎?你在jQuery的ready()中運行你的JS嗎? – 2013-02-11 23:36:20
添加了第二個編輯。我正在頭腦中運行JS。我沒有準備好(),並且happy.gif和tear.gif沒有被緩存。 – Dan88 2013-02-11 23:41:47
你可以將它移動到頁面底部嗎? – 2013-02-11 23:44:46