从下面的问题可以看出,我是html / js的新手,请原谅我之前提出这个问题。
我所要做的就是从html中调用命名空间中定义的js函数,我无法使其工作。
当我点击"警告!!"按钮,它应该调用sample.js文件中定义的myAlert函数,但它不起作用。你能帮我吗?
这是我的sample.js文件..
var mytest = mytest || {};
(function ($) {
function youhere() {
alert("You are Here!!");
}
function myAlert() {
alert("YouMadeIt");
}
function funcInit() {
youhere();
}
mytest.funcInit = funcInit;
}(jQuery));
和html文件:
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>Sample</TITLE>
<script type="text/javascript" src="./js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="./js/sample.js"></script>
</HEAD>
<script>
$(document).ready(function() {
mytest.funcInit();
});
function testBtnClk() {
mytest.myAlert();
}
</script>
<BODY>
<input type="button" id="testbtn" onclick="testBtnClk();" value="Alert!!" />
</BODY>
</HTML>
答案 0 :(得分:1)
因为myAlert
不是mytest
的属性。
函数myAlert
是一个闭包函数,它只存在于IIFE内部,它不能在IIFE之外访问。由于你有一个全局命名空间,你可以添加函数引用,以便你可以使用该引用来调用IIFE之外的方法。
var mytest = mytest || {};
(function ($) {
function youhere() {
alert("You are Here!!");
}
function myAlert() {
alert("YouMadeIt");
}
function funcInit() {
youhere();
}
mytest.funcInit = funcInit;
mytest.myAlert = myAlert;
}(jQuery));
演示:Fiddle