2013-10-29 99 views
1

我有一个Jvascript函数,当点击一个图像时,运行一个php文件并更新点击的图像。如果再次按下,我制作了另一个可以更改图像的功能。但在运行第一个函数后,如果再次单击该图像,则不会发生任何事情。这些是我的功能:Javascript函数不会运行两次

<script> 
    function upvote(id,bruger_id) 
    { 
     $.get("scripts/upvote.php?id="+id+"&bruger_id="+bruger_id, function() { 
      // Update image 
      $('.changeUp').attr('src', 'images/up.png'); 
      return; 
     }); 
    } 

    function noUpvote(id,bruger_id) 
    { 
     $.get("scripts/removevote.php?id="+id+"&bruger_id="+bruger_id, function() { 
      // Update image 
      $('.removeUp').attr('src', 'images/neutral_up.png'); 
      return; 
     }); 
    } 
</script> 

这就是我所说的功能。显示的基础图像基于cookie。

<img class="changeUp" 
    onclick="upvote('.$feed[$loaded]["id"].','.$feed[$loaded]["bruger_id"].');" 
    src="images/neutral_up.png" width="20px"> 

我意识到错误是,它只是再次调用相同的功能,使图像不改回来。但是我怎样才能解决这个问题呢?

+0

你怎么称呼这些功能? – Nzall

+3

你能告诉我们你分配点击处理程序的位置吗? – Nunners

+1

选择器是否与您的图片'.changeUp'或'.removeUp'匹配?两者都用在您的代码中。 –

回答

0

试试这个:

function upvote(id,bruger_id) 
    { 
     $.get("scripts/upvote.php?id="+id+"&bruger_id="+bruger_id, function() { 
      $('.changeUp').attr('src', 'images/up.png'); 
      $('.changeUP').attr('onclick', 'noUpvote('.$feed[$loaded]["id"].','.$feed[$loaded]["bruger_id"].');'); 
     }); 
    } 

    function noUpvote(id,bruger_id) 
    { 
     $.get("scripts/removevote.php?id="+id+"&bruger_id="+bruger_id, function() { 
      $('.changeUP').attr('src', 'images/neutral_up.png'); 
      $('.changeUP').attr('onclick', 'upvote('.$feed[$loaded]["id"].','.$feed[$loaded]["bruger_id"].');'); 
     }); 
    } 
+0

感谢您的回答。尝试了你的建议,似乎马上改变它的形象。在用户按下图像并检查会话变量的值并相应地修改图像后,是否可以设置某种会话变量? –

+0

你想为这两个动作都有一个功能吗? –

0

我认为问题是,你的第一个方法,upvote(),您使用的是类选择与changeUp,但你永远不会改变的类使用jQuery的img标签中,那么当你所说的第二种方法,用类选择removeUp,没有什么与阶级,试试这个:

function upvote(id, bruger_id) 
{ 
    $.get("scripts/upvote.php?id="+id+"&bruger_id="+bruger_id, function() { 
    $('.changeUp').attr('src', 'images/up.png'); 
    $('.changeUp').removeClass('changeUp').addClass('removeUp'); 
    } 
} 

你的IMG会是这样的:

<img class="removeUp" ...> 

你可以调用第二种方法并更改src属性。

问候。

+0

这工作,如果我向upvote函数添加一个属性,它将.removeUp类更改为中性图像。但这也有不利之处,我不能第三次按下图像。 –

+0

你可以用另一种方法做同样的事情,但是相反:'$('。removeUp')。removeClass('removeUp')。addClass('changeUp'); – Alavaros