我正在尝试点击执行功能,下面是HTML上的点击按钮,
Insights.init()
将在页面加载时执行将从服务器给我一些数据,现在点击按钮,我需要将变量传递给month
函数来过滤数据,并点击我想执行Insights()
var Insights = function() {
var initCheckColor = function(vari) {
console.log(vari);
}
var testFunction = function(vari) {
console.log('test');
}
return {
init: function() {
initCheckColor();
testFunction();
}
};
}();
jQuery(document).ready(function() {
Insights.init();
});
function month(vari) {
console.log("hoo");
return {
init: function() {
initCheckColor(vari);
testFunction();
}
};
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" onClick="month('test')"> Month </a>
现在的问题是,当我点击链接时,我可以在控制台上看到“hoo”,但是我也希望通过执行 initCheckColor(vari)功能来打印它,意味着我想要输出两个时间,但我无法输出,
我怎样才能获得两次输出?
答案 0 :(得分:2)
问题:是否使用此代码
function month(vari) {
console.log("hoo");
//this block of code
return {
init: function() {
initCheckColor(vari);
testFunction();
}
};
// upto here
}
当您调用month
函数时,您将返回一个具有名为init
的属性的对象注意:您只是返回一个对象而不执行该属性中的函数。另外一个问题是这个属性是一个执行另外两个函数的函数,但是这些函数在当前作用域中不可用。因为它们等于Insights
对象的私有方法。
解决方案:将使用数据重新初始化对象,就像您在页面加载时一样。
我修改了您的代码并在代码中添加了注释,以便进行更改。
var Insights = function() {
var initCheckColor = function(vari) {
console.log(vari);
}
var testFunction = function(vari) {
console.log('test');
}
return {
init: function(vari) { // have a input parameter during initialization.
initCheckColor(vari);
testFunction();
}
};
}();
jQuery(document).ready(function() {
Insights.init('something'); // I pass in the string "something" now this will be printed by the initCheckColor function.
});
function month(vari) {
console.log("hoo");
Insights.init(vari); // initialize the Insights object by passing in some value.
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" onClick="month('test')"> Month </a>
&#13;