我有一个html页面,其中我有多个“复选框”,每个复选框都调用一个函数onclick。
像这样的东西
onclick="manage(val1, val2)
在我的功能中,当我获得复选框的检查状态时,每次都给出错误。
function manage(val1, val2) {
**if ($(this).is(":checked")) {** //returns false everytime
//do something
//
}
else {
//do something
}
}
请告诉我我在哪里做错了......
提前致谢
答案 0 :(得分:6)
$('input[type="checkbox"]').click(function(){ // append click to any checkbox
if ($(this).is(':checked')) {
// do something
}
});
答案 1 :(得分:6)
调用manage(val1, val2)
时,this
将成为全局对象(如果处于严格模式,则为未定义)
但您可以使用this
手动设置call
值。试试这个:
onclick="manage.call(this, val1, val2);"
现在this
将是您刚刚点击的内容。
为了澄清一点,onclick="____"
this
内部是您点击的瘦身。但是一旦从那里调用函数,它就成为函数中的全局对象。所以:
onclick="foo(this);"
function foo(val) {
alert(this);
alert(val);
}
警告[object DomWindow]
(全局对象)然后[object HtmlInputElement]
(我点击的内容)
没有太多细节,这是“函数调用”在JavaScript中如何工作的结果。
答案 2 :(得分:2)
您需要设置onclick的上下文,或将其作为参数传递给它:
<input type="checkbox" onclick="manage(this, 'val1', 'val2');"></input>
<script>
function manage(that, val1, val2) {
if ($(that).is(":checked")) {
alert('checked')
}
else {
alert('unchecked')
}
}
</script>
当然,最好的办法是不要使用内嵌式javascript,请使用TerryR写的内容。