Javascript函数引用错误,函数未定义
我有以下HTML:Javascript函数引用错误,函数未定义,javascript,checkbox,Javascript,Checkbox,我有以下HTML: <input type='checkbox' onchange='checkvalue(this)' def='checked' value='checked' /> 基本上,每当复选框被选中或取消选中时,我想调用这个javascript函数,它将查看复选框的默认值是否被选中或取消选中,然后相应地更改该值-如果复选框的默认值为选中并被单击,则该值应更改为未选中,反之亦然。但是,当我单击复选框时,出现以下错误: Uncaught ReferenceError: c
<input type='checkbox' onchange='checkvalue(this)' def='checked' value='checked' />
基本上,每当复选框被选中或取消选中时,我想调用这个javascript函数,它将查看复选框的默认值是否被选中或取消选中,然后相应地更改该值-如果复选框的默认值为选中并被单击,则该值应更改为未选中,反之亦然。但是,当我单击复选框时,出现以下错误:
Uncaught ReferenceError: checkvalue is not defined (index):38
onchange
这里是指向我的JSFIDLE的链接:函数/标识符
checkvalue
是“on ready”函数的本地函数
要从内联事件属性使用checkvalue
,必须使其可从相关(全局)范围访问。比如说,
$(document).ready(function(){
function checkvalue(){
// ..
}
window.checkvalue = checkvalue;
});
然而,简单地消除内联事件的使用通常是首选。如果元素ID未知,或者事件必须应用于多个元素,则可以使用(即)
jQuery(function($){
function checkvalue() {
// ..
}
// ideally you'd pick a more refined ancestor than "document"
$(document).on("click", "checkbox", checkvalue);
});
而且,如果您继续使用内联事件,并且确实修复了第一个提到的问题,那么您还必须使用apply
来正确设置上下文,或者此
将对处理程序中的窗口对象求值,这将毫无乐趣,并导致其他错误
onclick="checkvalue.apply(this)"
checkvalue
不在全局范围内。它位于ready
处理程序的本地,该处理程序是一个匿名函数
我建议不要使用onclick=“…”
。如果您已经在使用jQuery,还可以使用jQuery绑定事件:
$("#myCheckBox").on("click", checkvalue); //you will need to give your checkbox
//an id
您可以在onReady
处理程序中执行此操作
我注意到的另一件事是:
if($(this).attr("value") != "checked")
这是行不通的。复选框的值与是否选中无关。使用:选中的
伪选择器代替。is
:
if($(this).is(":checked"))
您意识到该值与复选框是否被选中无关?
if($(this).is(":checked"))