【问题标题】:Is it possible to pass an array from onClick to javascript function?是否可以将数组从 onClick 传递给 javascript 函数?
【发布时间】:2015-05-11 21:09:34
【问题描述】:

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

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

【问题讨论】:

  • 只使用数组字面量,["value1","value2"]

标签: javascript php arrays function input


【解决方案1】:

是的,这是可能的。您可能想要使用数组初始化语法(又名“数组文字”),并且需要注意引号:

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

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


不过,这可能不是理想的。您可以考虑使用现代事件处理技术来连接处理程序,例如:

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

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

【讨论】:

  • 我知道这是不可取的,但现在它只想要一些简单和基本的东西......谢谢!
  • @TorbjörnLokeNornwen:我说可能不是”。 :-) 很高兴有帮助!
  • 如果数组是一个很长的由变量表示的数组怎么办?
  • @user7344209 - 在这种情况下,大小无关紧要,但变量需要是全局变量才能在 onClick 属性事件处理程序中使用(所以你想使用addEventListener 版本)。
【解决方案2】:

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

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

我还建议避免使用内联 JS,正如 T.J. Crowder 提到的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2011-04-22
    • 1970-01-01
    • 2016-10-16
    • 2012-02-11
    相关资源
    最近更新 更多