繁体   English   中英

使用click事件跨模块的Javascript调用变量

[英]Javascript calling variable across modules using click event

新手Javscripter在这里。 我正在尝试对模块进行一些练习,但遇到了麻烦。 我试图让controller模块以最小的成功从UIControl模块访问wagerAmount (由用户输入)。 我的相关代码如下:

var UIControl = (function() {
  return {
    getWager: function() {
      return {
          wagerAmount: document.getElementById('wager').value
      };
    }
  };
})();


var controller = (function(UICont) {
  var topics = ['sports', 'history', 'technology', 'music', 'movies'];
  var wager = UICont.getWager();

  var changeClass = function() {
    document.getElementById('bet').addEventListener('click', function() {
      console.log(wager);
      for (var i = 0; i < topics.length; i++) {
        if (document.getElementById(topics[i]).classList[1] == 'select') {
                activateAnswers();
            }
        }
    });
  }
})(UIControl);

运行此命令时, console.log(wager) {wagerAmount: ""} console.log(wager)打印一个空字符串{wagerAmount: ""} 如果我在changeClass函数中声明wagerchangeClass发生相同的情况。 但是,如果我在click事件中声明wager ,它将打印用户输入的数字。 但是,单击事件可以很好地访问controller声明的topics变量。 这里的主要问题是,当我需要将功能添加到多个click事件中时,我将不得不在每个click事件中声明一个新变量以访问相同的函数,这听起来像是不好的做法。 那么这是怎么回事?

好的,所以在昨晚花了几个小时试图解决这个问题之后,今天早上我在喝咖啡后很快想出了解决方案。 万一其他人遇到此问题,我将发布我的解决方案,如果其他人提出其他建议,他们也可以发布。

而不是声明的wagercontroller的任何地方,我创建了一个内部的新功能controller

var retrieveWager = function() {
    return {
        wager: UICont.getWager().wagerAmount
    };
}

然后可以在以下任何点击事件中访问它:

retrieveWager().wager;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM