1

我有一个 Jvascript 函数,当单击图像时,会运行 php 文件并且单击的图像会更新。我制作了另一个功能,如果再次按下它会改变图像。但是在运行第一个函数后,如果再次单击图像,则什么也没有发生。这些是我的功能:

<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">

我意识到错误在于它只是再次调用相同的函数,因此图像不会变回。但是我该如何解决这个问题呢?

4

2 回答 2

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"].');');
         });
    }
于 2013-10-29T08:44:36.167 回答
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 属性。

问候。

于 2013-10-29T08:53:00.797 回答