在回调函数

时间:2016-04-22 07:32:54

标签: javascript jquery function callback parameter-passing

我遇到了触摸移动问题'要使用回调函数中的参数值触发的事件。如果我通过"警报"我会成功但不是功能。示例中的基本概念是文本框上升为" 1" (obj.number)关于' touchmove'当它在所选div中滚动时(ID =" myDIV")。

以下是一个例子:

function myFunction(num) {
  document.getElementById("divText").innerHTML = x += num;
}

function Scroller(area, obj) {
  $divarea = document.getElementById(area);
  $divarea.addEventListener("touchstart", function() {
    obj.alertMe(obj.number); // THIS WORKS
  });

  $divarea.addEventListener("touchmove", function() {
    obj.scrollMe(obj.number) // THIS DOES NOT WORK AND WHAT I NEED TO RUN, "obj.number" SHOULD BE 1
  });

  var x = 0;
}

$scroll = new Scroller("myDIV", {
  number: 1,
  alertMe: function(numberValue) {
    alert(numberValue)
  },
  scrollMe: function(numberValue) {
    myFunction(numberValue)
  }
})

正文只是基本的HTML:

<div id="myDIV" >
    <!-- a bunch of text goes here so that it scrolls -->
</div>

<div id="divText" ></div>

非常感谢溢出社区帮助我发现我的错误,因为我已经花了太多时间进入我所知道的(希望)将是一个简单的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

将x初始化为全局变量,这将解决您的问题

function Scroller(area, obj) {
  $divarea = document.getElementById(area);
  $divarea.addEventListener("touchstart", function() {
    obj.alertMe(obj.number); // THIS WORKS
  });

  $divarea.addEventListener("touchmove", function() {
    obj.scrollMe(obj.number) // THIS DOES NOT WORK AND WHAT I NEED TO RUN, "obj.number" SHOULD BE 1
  });

  x = 0;
}