![](/img/trans.png)
[英]Calling a URL on receiving an event from a button click using 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
函数中声明wager
, changeClass
发生相同的情况。 但是,如果我在click事件中声明wager
,它将打印用户输入的数字。 但是,单击事件可以很好地访问controller
声明的topics
变量。 这里的主要问题是,当我需要将功能添加到多个click事件中时,我将不得不在每个click事件中声明一个新变量以访问相同的函数,这听起来像是不好的做法。 那么这是怎么回事?
好的,所以在昨晚花了几个小时试图解决这个问题之后,今天早上我在喝咖啡后很快想出了解决方案。 万一其他人遇到此问题,我将发布我的解决方案,如果其他人提出其他建议,他们也可以发布。
而不是声明的wager
在controller
的任何地方,我创建了一个内部的新功能controller
:
var retrieveWager = function() {
return {
wager: UICont.getWager().wagerAmount
};
}
然后可以在以下任何点击事件中访问它:
retrieveWager().wager;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.