Javascript 在JS中,当我';警报();传递给函数的参数值,它打印出[object object],为什么?

Javascript 在JS中,当我';警报();传递给函数的参数值,它打印出[object object],为什么?,javascript,jquery,Javascript,Jquery,我想做的很简单,我想把字符串值传递给JS函数,这样它就可以在通常的警报弹出窗口中显示它们。 以下是HTML: <div class="clickit" onclick="myfun('dog','cat')"> Hello </div> 你好 以下是JS: ('.clickit').click(function myfun(){ var i=0; for(i=0;i<arguments.length;i++){ alert(arg

我想做的很简单,我想把字符串值传递给JS函数,这样它就可以在通常的警报弹出窗口中显示它们。 以下是HTML:

<div class="clickit" onclick="myfun('dog','cat')"> Hello </div>
你好 以下是JS:

('.clickit').click(function myfun(){
    var i=0;
    for(i=0;i<arguments.length;i++){
        alert(arguments[i]);
    }
});
('.clickit')。单击(函数myfun(){
var i=0;
对于(i=0;i),它不起作用


任何帮助都将不胜感激。

没有具有公共名称的函数
myfun
。事件处理程序中的函数是命名函数表达式,因此该名称仅在该函数中可用。单击属性中的代码将崩溃,您可以在错误日志中找到该函数的错误消息

当函数作为事件处理程序调用时,只有一个参数:事件对象

要使用事件中的参数调用函数,需要命名函数:

function myfun(){
  var i=0;
  for(i=0;i<arguments.length;i++){
    alert(arguments[i]);
  }
}
$('.clickit').click(function(){
  myfun('dog','cat');
});
演示:

函数myfun(){
var i=0;

对于(i=0;iI)我不认为这个问题是重复的,我也不认为它应该被关闭。@J4G:它显然不是重复的,至少不是被标记为重复的问题,所以我重新打开了它。@Guffa这个问题已经被关闭并重新打开了?似乎没有显示历史记录?
参数[0]
是一个jQuery.Event实例,通过
调用时。单击
附件(因此
.toString
将其提供
“[对象对象]”
),onclick属性在调用时给出了一个ReferenceError。您在这里混合了两件事。为什么要使用内联事件处理程序并使用jQuery绑定另一个事件处理程序?我建议您先多花些时间阅读和使用它。@FelixKling:是的,当然。谢谢,我已经更正了。如果我插入了这段代码,您可能也想链接它:在标记中,它可以工作,但不幸的是,情况并非如此,像您那样声明一个函数甚至根本不会调用该函数。是否有其他方法允许我获得所需的内容,而无需冲突
。单击/onclick=“
”?我可以从html向函数传递参数而不在
onclick=“”中调用它吗
?或者我可以在没有
的情况下描述该类的函数吗?单击
。在(“单击”、…)
过程中?@FebioMosca:我刚刚忘记删除
);
在函数定义之后。我编辑了上面的代码,并添加了一个演示,演示了使用函数的两种方法。我需要从HTML代码传递所需的参数,而不是从JS传递。此外,如果我在StackOverflow上运行您的代码段,它根本不起作用,如果我只在JSFIDLE中运行第二个“Hello”这是因为值是直接从JS传递的,这不是我需要的。我需要解决
。单击/onclick=“”
冲突,同时仍然从HTML传递值并将函数myfun()与div的类关联。如果可能的话。。。
$('.clickit').click(function(){
  myfun('dog','cat');
});