javascript - 在JS中,当我将 'alert()'参数的值传递给函数时,它会打印出[object Object],为什么?

标签 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(arguments[i]);
    }
});

不幸的是,它无法正常工作,它打印出:[object Object]。

此外,即使有 2 个参数,它也只循环一次。 我按照这里的描述进行操作:w3schools ,但它不起作用。

任何帮助将不胜感激。

最佳答案

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

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

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

function myfun(){
  var i=0;
  for(i=0;i<arguments.length;i++){
    alert(arguments[i]);
  }
}

然后你可以从click属性中调用它:

<div class="clickit" onclick="myfun('dog','cat')"> Hello </div>

或者您可以从调用该函数的代码绑定(bind)事件处理程序:

$('.clickit').click(function(){
  myfun('dog','cat');
});

演示:

function myfun(){
  var i=0;
  for(i=0;i<arguments.length;i++){
    alert(arguments[i]);
  }
}

$('.clickit').click(function(){
  myfun('dog','cat');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div onclick="myfun('dog','cat')"> Hello </div>

<div class="clickit"> Hello </div>

关于javascript - 在JS中,当我将 'alert()'参数的值传递给函数时,它会打印出[object Object],为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33636406/

相关文章:

javascript - 添加动态行后,我无法使用 php 发送数据

javascript - 动态移动标记

javascript - 将 JSON 数据与 jQuery highcharts 插件结合使用

javascript - 放置事件后 Div 中的 Jquery Droppable 中心图像

jquery - 堆叠:last and :checked jQuery selectors together

javascript - jQuery 切换和动画与 1.9.1 及更高版本不兼容?

javascript - 如何在页面加载时调用 AJAX 函数

javascript - 使用 React Bootstrap 自定义 Card.Header

javascript - 如何根据url中的查询结果提供结果?

javascript - iPad 上的 JS .play() 播放错误的文件...建议?