JavaScript函数存在但未被调用

时间:2018-07-31 14:30:42

标签: javascript

我正在执行的脚本中具有各种功能,但是尽管两个功能彼此了解(不是作用域问题)和事件监听器触发,但其中一个未被调用。

我有一个input range element,带有两个事件侦听器,如下所示:

onchange event on input type=range is not triggering in firefox while dragging

我的代码是这样的:

function initZoom() {
  var self = this,
  wrap = self.elements.zoomerWrap = document.createElement('div'),
  zoomer = self.elements.zoomer = document.createElement('input');
  self.elements.viewBox.insertAdjacentElement('afterend',wrap);
  wrap.appendChild(zoomer);
  function change() {
    console.log("Fire Before On Zoom!");
    onZoom.call(self, {
      value: parseFloat(zoomer.value),
      origin: new TransformOrigin(self.elements.img),
      viewportRect: self.elements.enclosedCrop.getBoundingClientRect(),
      transform: Transform.parse(self.elements.img)
    });
  }

  self.elements.zoomer.addEventListener('input', change); // this is being fired twice on keypress
  self.elements.zoomer.addEventListener('change', change);

}

如您所见,我将两个元素(wrapzoomer)添加到了DOM中。这正在工作,并且我也有两个事件侦听器,它们也在工作。也就是说,当我操作范围输入时,我将Fire Before On Zoom!打印到控制台。

但是,我的onZoom通话似乎从未触发。我在这里:

function onZoom(ui) {
        console.log("Fire Before Apply CSS!");
 }

console.log()永远不会打印到控制台,并且该函数中的其他代码也永远不会执行。如果我将第一个console.log()放在onZoom.call()之后,它也不会打印。如果我将, onZoom添加到console.log("Fire Before On Zoom!"),它将打印onZoom的函数体,因此知道它存在...

那我的onZoom.call()怎么了?

0 个答案:

没有答案