目的: 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();
}
var 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 中的 head 标签内。您看到的是 .js 文件。这就是全部。
if (window.f == voteTotal.text()) {window.alert('They are equal');}
else { window.alert('They are not equal: ' + voteTotal.text() + ' ' +window.f); }
它有效,只是不是第一次通过。