Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript函数在jquery$(document).ready块中不起作用_Javascript_Jquery - Fatal编程技术网

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

javascript函数在jquery$(document).ready块中不起作用,javascript,jquery,Javascript,Jquery,我试图从onclick触发器调用JavaScript函数 HTML部分: <div class="my_radio"> <input type="radio" name="my_radio" value="1" onclick="my_func()"/> first button </div><!-- end of class my_radio --> 它不起作用 但是如果我将JavaScript函数保留在$(document.read

我试图从
onclick
触发器调用
JavaScript
函数

HTML
部分:

<div class="my_radio">
    <input type="radio" name="my_radio" value="1" onclick="my_func()"/>  first button
</div><!-- end of class my_radio -->
它不起作用

但是如果我将
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>

$(文档).ready(函数(){
函数my_func111(){
警报(“这是警报”);
}
});
函数my_func(){
警报(“这是警报”);
}
1) 为什么第一个
JavaScript
代码片段不起作用

2) 如何使第一个
JavaScript
代码段正常工作

编辑:


据我所知,
$(document).ready()
在网页完全加载时执行。那么,如果我在
$(document.ready()
外部写入
my_func()
,如何防止
my_func()
在整个页面加载之前或之后处于活动状态

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

在函数中定义的所有内容都只在函数中知道

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

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


我认识到这可能是一个非常简单的解释:-)

您的第一个代码片段不起作用,因为在函数
my_func111
中,是在您的
$(文档)中作为参数传递的匿名函数的本地范围内定义的。ready
调用

您可以通过将函数定义放置到文档范围并在ready函数内调用它来修复代码,例如:

function my_func(){
   alert("this is an alert");    
}

$(document).ready(function(){
   my_func();
});

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

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

  //..

  something(); // Will work
}

something(); // Won't work
我猜“它不工作”,你的意思是说“我的函数没有定义”或类似的

在函数内定义函数时,内部函数在外部函数外不可见(除非它是外部函数返回语句的一部分)


您需要学习闭包,这是一个很好的教程。

您将添加一个全局变量
isReady
$(document).ready
回调部分将其更改为
true

您的函数和
isReady
变量都必须在
$(document).ready的回调之外定义,以便可以从回调范围之外看到它们

<script type="text/javascript">
var isReady = false;    // outside the onReady callback

function  myFunc(){     // also outside the onReady callback
    if (!isReady) return; // abort if not ready

    alert("this is an alert");
}


// the onReady callback
$(function(){  // the newer jquery shorthand for: (document).ready(function(){
    isReady = true;
});

</script>

var isReady=false;//在onReady回调之外
函数myFunc(){//也在onReady回调之外
if(!isReady)return;//如果未准备好,则中止
警报(“这是警报”);
}
//onReady回调
$(function(){//较新的jquery缩写,用于:(document).ready(function()){
isReady=真;
});
您的HTML代码不需要更改。-我更改了名称以使用JS和HTML约定,但本质上与您最初编写的相同

<div class="divMyRadio">

<input type="radio" id="myRadio" value="1" onclick="myFunc()"/>  first button

</div><!-- end of class divMyRadio -->

第一个按钮

作为旁注:较新的JQuery使用
$(function(){
作为
$(document.ready(function())的缩写{
让事情对你来说更容易。

重复问题>就像外星人说的那样>可能重复的哦让我明白你的意思said@glavić,无意复制..这会对我的帖子产生负面影响吗?是的,说“未定义”。你的链接说:网站的安全证书不可信!回答我的问题2?熟悉关闭。。很抱歉,我之前对u的评论是错误的。没有说任何话。onclick接下来要做什么?现在慢慢来,耐心地阅读您的答案。它们已经包含了您理解和回答问题所需的所有信息!我尝试了您的代码。页面加载后会立即显示警报框。单击是n如果您不希望警报显示为onload,则从$(文档)中删除my_func()调用准备好了吗?这就是我的答案。我会把其余的留给你去理解。IssiaQui:如果你的问题已经解决了,请考虑接受一个答案,以便将来也能得到帮助!对我来说,必要的和不被注意的是,在$(文档)里面的一切。准备好了在回调函数中定义。
<div class="divMyRadio">

<input type="radio" id="myRadio" value="1" onclick="myFunc()"/>  first button

</div><!-- end of class divMyRadio -->