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

时间:2015-03-10 12:19:17

标签: javascript php arrays function input

在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"))">

这可以用一种简单的方式完成吗?

2 个答案:

答案 0 :(得分:7)

是的,可能。您可能想要使用数组初始化程序语法(又名&#34;数组文字&#34;),您需要注意引号:

<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,请使用像jQuery这样的DOM库,或this other answerhookEvent函数之类的东西来处理IE8和早期版本不具备{{{ 1}}。

答案 1 :(得分:3)

你有两个问题。 array应为Array,因为JS区分大小写。您也可以使用短格式[1,2,3]。然后请注意,您的onclick属性包含双引号。您需要通过\"或仅使用'来转义JS中的引号:

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

我还建议避免内联JS ,因为T.J. Crowder提到了它。