2010-12-02 13 views
0

以前に値が追加されたかどうかを確認するために値の配列を作成しようとしています。javascriptグローバルとjqueryコールバック関数でエラーが発生しました

アラートを表示している場合。 を配列に追加していない場合は、サーバーにpost ajaxクエリを実行して、対応するテーブル行を取得します。

私はjavascriptに関してはほとんど初心者ですが、構文上の不具合がスクリプト全体を破壊するため、デバッグが難しいと感じています。

ここに私のコードがあります。誰かがエラーを見れば、私はそれを修正する方法を教えてくれますか?

また、本当に便利なJavaスクリプトのデバッグに役立つプログラムが分かっている場合は、

私はjquery呼び出しがうまく動作することを知っています。なぜなら、後で配列チェックを追加したからです。

var selectedProductsArray = new array(); 
var selectedProductsCount = 0; 

$(function() { 
    $('.selectProductID').live('click', function(event) { 

     var count = 0; 
     var found = false; 
     while(count < selectedProductsCount) 
     { 
      if(selectedProductsArray[count] == $(this).val()) 
      { 
       found = true; 
       break; 
      } 
      count++; 
     } 

     if(found) 
     { 
      alert("you can only add one line for each product."); 
     }else{ 
      selectedProductsArray[selectedProductsCount] = $(this).val(); 
      selectedProductsCount++; 
      $.post("order/getitem", "ProductID="+$(this).val(), function(data){ 
       $("#orderItems tbody").append(data); 
       selectedProductsCount++; 
      }); 
     } 
     return false; 
    }); 
}); 

答えて

0

まず、「配列」クラスはありません。私はあなたにもそれを渡すことに驚いています。あなたが欲しい:

var selectedProductsArray = new Array(); 

または

var selectedProductsArray = [ ]; 

はまた、あなたが何度も何度も$(this).val()を計算しておく必要はありません、あなただけ言う必要があります。

var count = 0; 
var found = false; 
var value = $(this).val(); 

whileループの上残りの部分に$(this).val()の代わりにvalueを参照してください。また、を2回インクリメントしています。これは1回だけしたいと思っている場合は、selectedProductsArrayに空白のエントリを残してしまい、後で混乱する可能性があります。

私は他の目障りなエラーを見ることはできませんが、new array()はショーストッパーでなければなりません。完全に機能する例がなければ言うことは難しい。

order/getitemが呼ばれますか?それは何かを戻しますか?

デバッグのために、物事を試し:

+0

イエス右手を。そのような大いなるミス。 12時間後、すべてのテキストがマッシュアップしているように見えません。感謝万円。 – ryan

関連する問題