2012-01-17 19 views
0

私はjQueryライブラリを使用して、配列にアイテムをプッシュしようとしています:なぜこのjs配列関数は機能しませんか?

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; 
} 

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

私はクロームでこれを取得する:

オブジェクトmyarrayのは、何のメソッド 'プッシュ'

を持っていません
+0

あなたのインデントは読みにくいコードになります完全にあなたのマークアップからあなたのjavascriptを分離し、ただクリックされた要素の属性(または任意の他の要素)として値を格納することができます。 –

+1

'arr'ではなく' myarray'を押し込むべきですか? –

+0

また、正確には機能しません。エラーメッセージなどが出ますか? –

答えて

4

ああ、私は問題を発見したと思う。 onclickでは、2つの文字列を持つ関数を呼び出します。最初の引数は'myarray'ではなく配列でなければなりません。

引用符を取り除くだけで(そしてmyArrayがグローバルスコープにある場合)、それはうまくいくはずです。つまり、それは次のようになります:

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

どうすればonclick内の配列を参照できますか? –

+1

'myArray'がグローバル変数であると仮定すると、' onclick = "setFacet(myArray、 'val')" 'を実行するだけです。 –

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

あなたは

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

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

    $('#myEle').click(function(){ 
     myArray.push($(this).val()) 
    }) 
    }) 
</script> 
関連する問題