是否可以将数组从 onClick 传递到 javascript 函数?

Is it possible to pass an array from onClick to javascript function?

在PHP中我可以这样写一个函数:

function myFunction(myArray)
{
    foreach(myArray)
    {
        // do stuff with array
    }
}

然后我可以这样称呼它(可能很丑,但仍然有效):

myFunction(array("string1","string2"));

我想用 JavaScript 做一些类似的事情,但不知道是否可以将数组传递给这样的函数。这是我的伪函数:

function myFunction(myArray)
{
    for (index = 0; index < myArray.length; ++index)
    {
        // do stuff with array
    }
}

我想像这样使用 onClick 从按钮调用它:

<input type="button" value="myButton" onClick="return myFunction(array("string1","string2"))">

这可以通过简单的方式完成吗?

是的,可能。您可能想使用数组初始化语法(又名 "array literal"),并且您需要注意引号:

<input type="button" value="myButton" onClick="return myFunction(['string1','string2'])">

如果您的属性值用双引号引起来,则不能在该值内 使用文字双引号。最简单的方法是使用单引号,尽管由于属性值的文本是 HTML 文本(人们往往会忘记这一点),您 可以 使用 &quot; 如果你喜欢的。 (我不会。:-))而且文本是 HTML 的事实对于数组的内容要牢记......


虽然可能并不理想。您可能会考虑使用现代事件处理技术来连接处理程序,例如:

document.querySelector("input[type=button][value=myButton]").addEventListener("click", function() {
    myFunction(['string1','string2'])
}, false);

如果您需要支持旧版 IE,请使用 DOM 库,如 jQuery,或类似 this other answer 中的 hookEvent 函数来处理 IE8之前没有 addEventListener.

你有2个问题。 array 应该是 Array,因为 JS 是区分大小写的。您也可以使用缩写 [1,2,3]。然后注意您的 onclick 属性用双引号引起来。您需要通过 \" 或简单地使用 ':

来转义 JS 中的引号

function myFunction(arr){
  // for demo purposes
  alert( JSON.stringify(arr) );
}
<input type="button" value="myButton" onClick="return myFunction(['string1','string2'])">

我还建议 避免内联 JS 正如 提到的那样。