2012-01-17 140 views
0

我使用jQuery庫,並試圖推動項目的數組:這個js數組函數爲什麼不起作用?

< onclick ="setFacet('myarray','val');">AOC

var myarray = []; 

function setFacet(arr, bb) { 
    for (var i=0; i< arr.length; i++) 
     if (arr[i] == bb) 
      return true; 

    arr.push(bb); 
    return false; 
} 

我得到這個在chrome:

對象myarray中有沒有方法 '推'

+0

你的縮進使代碼難以閱讀。 – 2012-01-17 04:25:53

+1

你不應該推入'myarray'而不是'arr'嗎? – 2012-01-17 04:26:07

+0

另外,什麼不工作?你是否收到錯誤信息或什麼? – 2012-01-17 04:26:53

回答

4

哦,我想我找到了問題。在您的onclick中,您使用兩個字符串調用該函數。第一個參數應該是一個數組而不是'myarray'

如果你剛剛擺脫引號(如果myArray在全球範圍內)它應該工作。也就是說,有它看起來像這樣:

onclick="setFacet(myArray, 'val')" 
+0

如何在onclick中引用數組? – 2012-01-17 04:28:53

+1

假設'myArray'是一個全局變量,你應該可以做'onclick =「setFacet(myArray,'val')」'。 – 2012-01-17 04:30:16

2

變化:

onclick="setFacet('myarray','val')"

要:

onclick="setFacet(myarray)"

然後更改功能setFacet以下:

function setFacet(arr, bb) { 
    for (var i=0; i< arr.length; i++) 
     if (arr[i] == bb) return true; 

    arr.push(this.innerHTML); /* "this" in the context of the "click" */ 
          /* is the element clicked */ 

    return false; 
} 
1

用的onclick聽衆的元素應該是

<...onclick ="setFacet(myarray,'val');"> 

myarray中不應該被引用,否則將被視爲字符串。

0

你可以你的JavaScript從您的標記完全分開,只是存儲的值作爲點擊的元素的屬性(或任何其他元素)

<input type="button" value="someValue"> 

<script> 
    $(function(){ 
    var myArray = []; 

    $('#myEle').click(function(){ 
     myArray.push($(this).val()) 
    }) 
    }) 
</script> 
相關問題