从外部函数调用Javascript立即函数

时间:2016-09-18 15:52:33

标签: javascript jquery

我试图在点击html文件下定义的按钮时调用test1.js中定义的立即函数。它总是抛出错误"测试未定义"。我有点意识到它是一个立即函数,它立即调用,因此它返回"未定义的错误"。但是,有什么方法可以在点击按钮时调用立即函数(访问方法,属性等)吗?

提前谢谢。



//test1.js

var test = (function(){
alert(window);
var tmp = 'hello';
}());

<!DOCTYPE html>
<html>
<head>

</head>
<body>
<script type="text/javascript" src="test1.js"></script>
  
<input type="button" id="btn1" value="ClickMe!"  />
  
<script type="text/javascript">
var btn = document.getElementById("btn1");
btn.addEventListener("click",fun1,false);

function fun1(){
alert(test.tmp);
}
</script>

</body>
</html>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

您必须修改代码,以便IIFE返回具有tmp属性的对象。如

var test = (function(){
alert(window);
var tmp = 'hello';
return {tmp:tmp};
}());

答案 1 :(得分:0)

运行IIFE后,您需要显式返回包含您想要的任何数据的对象。 (只需将我的回复添加到下面的代码段中。)

&#13;
&#13;
$config['base_url'] = "http://".$_SERVER['HTTP_HOST']."/projectname";
$config['uri_protocol'] = 'PATH_INFO';
&#13;
    RewriteEngine on
RewriteCond $1 !^(index\.php|images|system|css|js|style|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
&#13;
&#13;
&#13;