javascript:功能问题

时间:2010-04-05 19:06:57

标签: javascript jquery

我有这个简单的功能:

<script type="text/javascript">
//<![CDATA[
    jQuery(function($){
        function here(b){alert(b);} ;
        here(6);
    });
//]]>
</script>

我在页面上有这个按钮:

<button onclick="here(7);">TEST</button>

警告会在页面加载时触发,但不会在按钮单击时触发。如果我用警报替换这里(7),它工作正常。为什么它不适用于功能呢?

艾伦

2 个答案:

答案 0 :(得分:4)

因为您的函数是在函数中定义的,所以它的范围有限。要全局访问该功能,必须全局定义。 ,不建议这样做。这就是为什么你使用像jQuery这样的库来避免所有全局变量并保持不引人注意的东西。最适合您的解决方案是将标记更改为此...

<button id="myBtn">TEST</button> 

然后以编程方式将click处理程序分配到与定义的函数相同的区域中......

<script type="text/javascript"> 
//<![CDATA[ 
    jQuery(function($) { 
        function here(b) { alert(b); };    
        here(6); 

        $("#myBtn").click(function() {
          here(7);
        });
    }); 
//]]> 
</script> 

行为分离要好得多,你不是吗?

答案 1 :(得分:0)

您正在另一个函数中定义函数here(请参阅closures)。这意味着函数here仅在jQuery(function($){

的范围内可用

尝试:

<script type="text/javascript">
//<![CDATA[
    function here(b){alert(b);} ;
    jQuery(function($){
        here(6);
    });
//]]>
</script>