2012-07-05 71 views
0

我在傳遞一個數組作爲函數的參數麻煩: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>"; 
} 
+0

你想點擊事件來調用'showArray(數組1)'使得函數使用'array1'變量的內容在事件發生的時間?或者您是否希望click事件調用'showArray([「1」,「2」]),使得該函數可以像創建元素時那樣使用數組值(忽略對array1的任何更改)自那以後可能發生的變量)? – nnnnnn 2012-07-05 22:54:10

+0

@nnnnnn第二! – 2012-07-05 23:02:21

+0

在這種情況下,請看Mark Linus的回答。 – nnnnnn 2012-07-05 23:09:22

回答

2

您的代碼不工作,因爲show變種的評價值如下:

"<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「] array

+0

實際上除了這個問題,他正在調用方法showArray,並且函數被聲明爲show。 – willvv 2012-07-05 22:54:49

+0

這是interessing。但如果我有「var array1 = []; array1 [0] = {」type「:0}; array1 [1] = {」type「:2};」該代碼不起作用。爲什麼? – 2012-07-05 23:15:54

+0

好吧,請發佈您現在正在嘗試使用的代碼,然後我會回答您的問題 – 2012-07-05 23:18:00

0

取出報價:

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

每個人都缺少它:

var show = "<p>Show: <a href='javascript:showArray(array1)'>Click to show array</a></p>" 
  1. 你,如果你使用一個變量取出的報價。
  2. 「href」屬性不包含引號。
  3. 建議使用href="javascript:",而不是onclick
+0

不是我,我沒有! – 2012-07-05 22:52:48

+0

你做了...看到我編輯的答案 – 2012-07-05 22:53:27

+0

他的功能是showArray,字符串是顯示... – 2012-07-05 22:55:20

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/

0

你的onclick調用showArray但你的函數是稱爲show

如果檢查DOM,你會看到什麼JS是創造:

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

這是無效的!因此,只需將其更改爲

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

並且DOM也正是如此。這是有效的。

DEMO