目的: 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