从html调用js命名空间函数

时间:2015-03-13 01:21:51

标签: javascript jquery html

从下面的问题可以看出,我是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>

1 个答案:

答案 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