比较不适用于第一次通话

时间:2013-02-11 23:29:49

标签: jquery image comparison conditional src

目的: 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');

}

那么,我哪里出错了?


此代码包含在head标记内的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

1 个答案:

答案 0 :(得分: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