2016-11-24 42 views
1

执行两个功能,我想上单击执行功能,下面是点击HTML按钮,jQuery的上点击

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>

没有全部功能w问题是,我可以看到“hoo”打印在控制台上,当我点击链接时,但我也想打印它与执行initCheckColor(vari)功能,意味着我想输出两次,但我不能输出它,

我怎样才能得到两次输出?

+0

@Raviteja,VARI = “测试”,这是穿过的onClick – rjcode

+0

什么是'Insights.init()'该怎么办?点击按钮应该发生什么。你的代码不是自我解释。 – sabithpocker

+1

根据你的代码,为了调用'month'的'init',你必须执行'month().init()',但是不能修复代码,因为initCheckColor将超出范围。 – sabithpocker

回答

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. 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" onClick="month('test')"> Month </a>

+1

完美...解决了问题... – rjcode