代码之家  ›  专栏  ›  技术社区  ›  Summer Developer

JavaScript函数存在,但未被调用

  •  1
  • Summer Developer  · 技术社区  · 7 年前

    我在这个脚本中有很多函数,但是其中一个函数没有被调用,尽管这两个函数相互了解(不是范围问题)并且事件侦听器正在触发。

    我有一个 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);
    
    }
    

    如你所见,我有两个要素( wrap zoomer )添加到DOM。这是有效的,我还有两个事件侦听器,它们也在工作。也就是说,当我操作范围输入时 Fire Before On Zoom!

    但是,我的 onZoom 打电话好像从来都不打火。我这里有:

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

    那个 console.log() 永远不要打印到控制台,该函数中的进一步代码永远不会执行。如果我把第一个 控制台.log() 在后面 onZoom.call() 也没有指纹。如果我加上 , onZoom console.log("Fire Before On Zoom!") 放大 所以它知道它存在。。。

    onZoom.call()

    0 回复  |  直到 7 年前