2013-02-11 47 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