javascript函数在jquery $(document).ready块中不起作用

Ist*_*med 4 javascript jquery

我试图JavaScriptonclick触发器调用函数.

HTML 部分:

<div class="my_radio">
    <input type="radio" name="my_radio" value="1" onclick="my_func()"/>  first button
</div><!-- end of class my_radio -->
Run Code Online (Sandbox Code Playgroud)

JavaScript代码

<script type="text/javascript">
    $(document).ready(function(){
        function  my_func(){
            alert("this is an alert");
        }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这是行不通的.

但是,如果我将该JavaScript功能 保留在$(document).ready()代码之外,它就可以工作.以下是相关的代码段:

<script type="text/javascript">
    $(document).ready(function(){
        function  my_func111(){
            alert("this is an alert");
        }
    });

    function  my_func(){
        alert("this is an alert");
    }
</script>
Run Code Online (Sandbox Code Playgroud)

1)为什么第一个JavaScript代码片段不起作用?

2)如何让第一个JavaScript代码段工作?

编辑:

因此我知道,$(document).ready()当网页完全加载时执行.那么my_func()如果我my_func()在外面写,如何防止在完整页面加载之前或之后激活$(document).ready()

Did*_*hys 6

这都是关于javascript执行上下文和范围的.

您在函数中定义的所有内容仅在此函数中知道.

在第一次测试中,该函数my_func()只能在就绪回调(以及内部其他对象)中使用.你不能在外面引用它.

在第二个示例中,该函数my_func()对文档是全局的,可以从任何地方访问.

我知道这可能是一个简单的简单解释:-)


Sgo*_*kes 5

如果您在回调中定义函数,则只能在此回调中使用它:

$(document).ready(function(){
  function something(){
    alert('test');
  }

  //..

  something(); // Will work
}

something(); // Won't work
Run Code Online (Sandbox Code Playgroud)