函数中的Javascript参数

时间:2012-07-05 22:45:59

标签: javascript

我无法将数组作为函数的参数传递:

function test() {
   var array1 = ["1","2"];
   var show = "<p>Show: <a href=# onClick='showArray("+array1+")'>Click to show array</a></p>";
}

所以我需要有一个onClick,但是当我传递一个数组并调用函数时

function showArray(array) { alert (array.length); } 

什么都不返回。为什么不工作?

编辑:

function test() {
    var array1 = [];
    array1[0] = {
        "type" : 0, 
        "message" : "example", 
        "from" : "path1",
        "count" : 1,
        "isChecked": false
    };
    array1[1] = {
        "type" : 2, 
        "message" : "example", 
        "from" : "path2",
        "count" : 50,
        "isChecked": false
    };

   var show = "<p>Show: <a href=# onClick='showArray(["+array1+"])'>Click to show array</a></p>";
}

5 个答案:

答案 0 :(得分:2)

您的代码无效,因为show var的评估值如下:

"<p>Show: <a href=# onClick='showArray(\"1\",\"2\")'>Click to show array</a></p>"

这意味着showArray函数正在接收两个参数(“1”和“2”),它们都不是数组,而是字符串。

要使代码正常工作,请使用:

var show = "<p>Show: <a href=# onClick='showArray(["+array1+"])'>Click to show array</a></p>"

通过这种方式,评估值将为:

"<p>Show: <a href=# onClick='showArray([\"1\",\"2\"])'>Click to show array</a></p>"

这意味着showArray只会收到一个参数:[“1”,“2”]数组

答案 1 :(得分:1)

每个人都错过了它:

var show = "<p>Show: <a href='javascript:showArray(array1)'>Click to show array</a></p>"
  1. 如果使用变量,则必须取出引号。
  2. “href”属性不包含引号。
  3. 建议使用href="javascript:"代替onclick

答案 2 :(得分:0)

取出引号:

var show = "<p>Show: <a href=# onClick='showArray(array1)'>Click to show array</a></p>";

答案 3 :(得分:0)

试试这个:

<script>
var array1 = ["1","2"];
function showArray(myArray) { alert (myArray.length); } 
</script>
<p>Show: <a href='#' onClick='showArray(array1); return false;'>Click to show array</a></p>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

以下是此示例的链接:http://jsfiddle.net/eNXx5/

答案 4 :(得分:0)

您的onclick调用showArray,但您的功能称为show

如果您检查DOM,您将看到JS正在创建的内容:

<a href="#" onclick="showArray(1,2)">Click to show array</a>

那是无效的!所以只需将其更改为

<a href='#' onClick='showArray(array1)'>

和DOM也是如此。这是有效的。

DEMO