Javascript - 从模块导出函数

时间:2017-03-13 19:09:17

标签: javascript jquery

我试图从另一个脚本调用一个脚本中的全局函数。 这是第一个名为subpage.js的脚本:

$(document).ready(function(){
  shopButtons();

  //hide store buttons in alex box on subpages
  if (window.location.pathname.includes('/subpage')) {
    $('.js-alex-box-store-buttons').hide();
    var element = window.location.hash.substr(1);
    scrollToElement('#' + element);
  }
});

这是另一个名为subpage-scroll.js的脚本:

function scrollToElement(element) {
  if($(element) && $(element).offset()) {
    $('html,body').animate({
      scrollTop: $(element).offset().top - 80
    });
  }
}

$( '.anchor-links' ).click(function() {
  var element = $(this).attr('id').split('-');

  if (element[0] == 'download') {
    $("html, body").animate({ scrollTop: 0 });
  }
  else {
    scrollToElement('#' + element[0]);
  }
});

我按顺序将所有脚本捆绑到一个app.js脚本中:

require('./subpage-scroll');
require('./subpage');

但是当我导航到subpage时出现错误:

  

get Uncaught ReferenceError:未定义scrollToElement

当我将函数声明为全局函数时,为什么会得到函数?我需要函数在我使用它的脚本之前的脚本?

更新

我尝试过制作新文件scroll-to-element.js

exports.scrollToElement = function(element) {
  if($(element) && $(element).offset()) {
    $('html,body').animate({
      scrollTop: $(element).offset().top - 80
    });
  }
}

然后我从scrollToElement删除了subpage.scroll.js函数,只需在subpage.jssubpage.scroll.js中通过添加脚本顶部来添加它:

var scrollToElement = require('./scroll-to-element');

然后我使用的功能是:scrollToElement.scrollToElement()

0 个答案:

没有答案