Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 实现类似功能的问题。函数只工作一次_Javascript_Jquery - Fatal编程技术网

Javascript 实现类似功能的问题。函数只工作一次

Javascript 实现类似功能的问题。函数只工作一次,javascript,jquery,Javascript,Jquery,“喜欢”或“不喜欢”函数只工作一次,就好像“喜欢”变量不再是true或false一样,这将是有效值。第一次它运行良好(喜欢和不喜欢),但第二次“其他”警报出现,这对我来说是绝对不清楚的。你能解释一下那里可能出了什么问题吗?html中的Bool在我通过alert检查时已正确更新 带有小django模板代码的HTML,请不要注意: <div class="incriminate_like" data-post-pk="{{ answer.pk }} " data-who-likes-id="{

“喜欢”或“不喜欢”函数只工作一次,就好像“喜欢”变量不再是true或false一样,这将是有效值。第一次它运行良好(喜欢和不喜欢),但第二次“其他”警报出现,这对我来说是绝对不清楚的。你能解释一下那里可能出了什么问题吗?html中的Bool在我通过alert检查时已正确更新

带有小django模板代码的HTML,请不要注意:

<div class="incriminate_like" data-post-pk="{{ answer.pk }} " data-who-likes-id="{{ request.user.id }} " >

<div class="data_div" data-bool="false">
<img  class="like_image" src="{% static "img/like.png" %}"/>
</div>
</div>

问题是,若调用makeLiked()或makeDisliked(),则将数据bool值设置为string,所以这就是为什么liked==true(甚至liked==false)只返回false。 尝试设置如下内容:

that.find(".data_div").data("bool", true);
(请注意,第二个参数不带“”)


最后的代码应该是这样的:

$('.incriminate_like').click(function() {

  var post_pk = $(this).data("post-pk");
  var who_likes_id = $(this).data("who-likes-id");
  var that = $(this);
  var liked = $(this).find(".data_div").data("bool");

  function makeLiked() {

    that.find("img").attr("src", "{% static 'img/likered.png' %}");
    that.find(".data_div").data("bool", true);
    // just incriminating 
    var like_number_original = that.next().html();
    var integer_of_like_number_original = parseInt(like_number_original);
    var plus_one_number = integer_of_like_number_original + 1
    that.next().html(plus_one_number);

  }

  function makeDisliked() {

    that.find("img").attr("src", "{% static 'img/like.png' %}");
    that.find(".data_div").data("bool", false);
    // just incriminating 
    var like_number_original = that.next().html();
    var integer_of_like_number_original = parseInt(like_number_original);
    var plus_one_number = integer_of_like_number_original - 1
    that.next().html(plus_one_number);


  }

  if (liked == false) {
    ajaxPost('/like/', {
      'post_pk': post_pk,
      'who_likes_id': who_likes_id,
      'whom_id': whom_id
    }, function() {
      makeLiked();


    })
  } else if (liked == true) {

    ajaxPost('/dislike/', {
      'post_pk': post_pk,
      'who_likes_id': who_likes_id,
      'whom_id': whom_id
    }, function() {
      makeDisliked();



    })




  } else {

    alert('error');
  }

})

问题是,若调用makeLiked()或makeDisliked(),则将数据bool值设置为string,所以这就是为什么liked==true(甚至liked==false)只返回false。 尝试设置如下内容:

that.find(".data_div").data("bool", true);
(请注意,第二个参数不带“”)


最后的代码应该是这样的:

$('.incriminate_like').click(function() {

  var post_pk = $(this).data("post-pk");
  var who_likes_id = $(this).data("who-likes-id");
  var that = $(this);
  var liked = $(this).find(".data_div").data("bool");

  function makeLiked() {

    that.find("img").attr("src", "{% static 'img/likered.png' %}");
    that.find(".data_div").data("bool", true);
    // just incriminating 
    var like_number_original = that.next().html();
    var integer_of_like_number_original = parseInt(like_number_original);
    var plus_one_number = integer_of_like_number_original + 1
    that.next().html(plus_one_number);

  }

  function makeDisliked() {

    that.find("img").attr("src", "{% static 'img/like.png' %}");
    that.find(".data_div").data("bool", false);
    // just incriminating 
    var like_number_original = that.next().html();
    var integer_of_like_number_original = parseInt(like_number_original);
    var plus_one_number = integer_of_like_number_original - 1
    that.next().html(plus_one_number);


  }

  if (liked == false) {
    ajaxPost('/like/', {
      'post_pk': post_pk,
      'who_likes_id': who_likes_id,
      'whom_id': whom_id
    }, function() {
      makeLiked();


    })
  } else if (liked == true) {

    ajaxPost('/dislike/', {
      'post_pk': post_pk,
      'who_likes_id': who_likes_id,
      'whom_id': whom_id
    }, function() {
      makeDisliked();



    })




  } else {

    alert('error');
  }

})

你能提供更多的html代码吗?“incriminate_like”类的元素是什么?您的问题是$(this).find(“.data_div”).data(“bool”)返回未定义的元素,因此它可能找不到元素“data_div”@DamianBartosik好的,这里还有一些django模板代码,您能提供更多html代码吗?“incriminate_like”类的元素是什么?您的问题是$(this).find(“.data_div”).data(“bool”)返回未定义的元素,因此它可能找不到元素“data_div”@DamianBartosik好的,还有一些django模板代码