Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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 为什么我的$(document).ready(function())没有执行?_Javascript_Jquery_Document Ready - Fatal编程技术网

Javascript 为什么我的$(document).ready(function())没有执行?

Javascript 为什么我的$(document).ready(function())没有执行?,javascript,jquery,document-ready,Javascript,Jquery,Document Ready,我的html视图中有一个复选框,如下所示: <input type="checkbox" id="hasPrereqBlock" name="hasPrereqBlock" onchange="hasPrereqBlockHandler(this)"> function hasPrereqBlockHandler(cb){ if (cb.checked){ $("#ca

我的html视图中有一个复选框,如下所示:

<input type="checkbox" id="hasPrereqBlock" name="hasPrereqBlock" onchange="hasPrereqBlockHandler(this)">
function hasPrereqBlockHandler(cb){
    if (cb.checked){
        $("#campaignPrereqBlockRevDiv").show();
        $("#instruction_1_RevDiv_M").hide();
        $("#instruction_2_RevDiv").show();
    } else {
        $("#campaignPrereqBlockRevDiv").hide();
        $("#instruction_1_RevDiv_M").show();
        $("#instruction_2_RevDiv").hide();
    }
}
当我加载页面时,我希望执行此功能并为其提供对复选框的引用,因此,由于复选框的状态,它仅显示所需内容,因此我具有此功能:

$(document).ready(function() {
    hasPrereqBlockHandler($("#hasPrereqBlock"));
});
我还尝试了document.getElementById(“hasPrereqBlock”)而不是$(“#hasPrereqBlock”),但这3个元素中的每一个都会显示出来,只有在我单击复选框时才会隐藏。 为什么我的代码不起作用

函数haspreqblockhandler(cb){
如果(cb.选中){
$(“#活动预请求块revdiv”).show();
$(“#指令_1_RevDiv_M”).hide();
$(“#指令_2_RevDiv”).show();
}否则{
$(“#活动预请求块revdiv”).hide();
$(“#说明1_RevDiv_M”).show();
$(“#指令_2_RevDiv”).hide();
}
}
$(文档).ready(函数(){
控制台日志(“文件准备就绪”);
hasPrereqBlockHandler($(“#hasPrereqBlock”);
});
#活动PreReqBlockRevDiv,
#说明2修订版{
显示:无;
}

复习1

回顾2

Campaing
您的jQuery对象没有
。已选中
。如果您
console.log
cb.checked
它将返回
undefined
,而不是布尔值,因此您知道有问题<代码>.checked
在jQuery复选框对象上不存在

更改:

cb.checked
进入:


你在混合JavaScript和jQuery!如Dcanglo所述,将要发送的元素更改为文档就绪部分中的函数:

$(document).ready(function() {
    hasPrereqBlockHandler($("#hasPrereqBlock").get(0));
});
get
返回给定索引处的元素,因为有一个元素(您使用的是一个ID,所以我假设只有一个),所以它发送第一个元素。发送到函数的元素与检查输入时得到的
值相同


尝试用
$(“#haspreqblock”)[0]替换
您需要记住您使用的是香草JS还是jQuery
$(“#hasPrereqBlock”)
是一个jQuery对象,没有
。选中
(请注意,您的问题标题基于错误的假设,请始终执行诸如
console.log(“document ready”);
之类的基本调试以尝试缩小问题范围)谢谢@ChrisG,这是一个很好的观点,“document ready”没有打印出来,但我不明白为什么,因为jQuery与此无关……考虑到实际问题是其他的,这很奇怪。我已经编辑了您的代码段,函数按预期调用。好的,我添加了一个
窗口。addEventListener('load',(event=>{});
,这一切正常。但是我使用
hasPrereqBlockHandler($(“#hasPrereqBlock”))
哪个是jQuery,不是吗?那么为什么jQuery在这个JS加载函数中工作,而不是在jQuery文档就绪函数中工作?谢谢你的回答,这很好,但它仍然不工作。我认为这是jQuery本身的一些主要问题
$(document).ready(function() {
    hasPrereqBlockHandler($("#hasPrereqBlock").get(0));
});