2011-08-21 184 views
1

我正在调用jQuery函数,但警报函数显示[object Object]。检查值有效,但不是传递的id值。将值传递给Javascript函数

这里的呼叫从HTML输出拍摄的功能:

<td class="myGroups"> 
    <input class="chkSubscribed" type="checkbox" onclick="UpdateSubscription(2)" name="subscribed"> 
</td> 

这里的javascsript功能:

$(".chkSubscribed").change(function(id) { 
    alert(id); 
    var chkd=0; 
    var groupid=id; 
    if (this.checked) { chkd=1; } 
     $.ajax({ 
     type:"POST", 
     url:"resources/updateSubscribe.php", 
     data: { group_id: groupid, checkval: chkd }, 
     success: function(){ 
     alert("Account updated!" + "chkval=" + chkd + " id=" + groupid);    } 
    }); 
}); 

感谢您的帮助!

回答

3

你做错了。

要么调用一个函数,要么想要使用change事件。

如果要调用一个函数创建一个函数如下:

function moo(id) { 
    //code here 
} 

如果你想使用变更事件中,你可以给你的输入数字的ID做到这一点,你要如下:

<input id="2" class="chkSubscribed" type="checkbox" name="subscribed"> 

然后你的JavaScript应该如下所示:

$(".chkSubscribed").change(function() { 
    id=this.id; 
    //and the rest of the code as you wrote 
}); 
+0

这做到了。谢谢! – matt

3

这里有几个不同的问题。

  1. 使用alert()进行调试。这几乎总是比使用console.log()差。传递到alert的所有内容都将转换为字符串,这就是为什么您看到"[object Object]"而不是有用的东西。切换到console.log(),你会看到有意义的东西。
  2. jQuery事件回调通过了一个jQuery event object对象是id被设定。
  3. 内联onclick处理程序有绝对没有处理您使用jQuery绑定的change处理程序。
0

jQuery函数change()将传递事件对象,而不是被更改的对象的id - 您将它当作它当前的id对待。