Javascript 为什么我的$(document).ready(function())没有执行?
我的html视图中有一个复选框,如下所示: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
<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));
});