2012-02-21 29 views
6

チェックされたチェックボックスの値をすべてカンマ区切りの文字列に変換して","", "に変換するこの関数を実行しようとしています。問題は、私は奇妙なエラーを取得しています:オブジェクトにメソッド 'replace'がありません

$('.name_boxes').live('click', function() { 
    var all_boxes = $('.name_boxes'); 
    var all_boxes_values = [] 
    for (var i = 0; i < all_boxes.length; i++) { 
     if (all_boxes[i].checked) { 
      all_boxes_values.push(all_boxes[i].value) 
     } 
    } 
    var all_boxes_values_clean = all_boxes_values.replace(/,/g,", "); 
    alert(all_boxes_values_clean); 
}); 

コンソールエラーは言う:

Uncaught TypeError: Object Aaron Ramsey,Aaron Renfree has no method 'replace'.

私は警告ボックスが届きません。

これは私を少し超えています。誰かが間違っていることを説明できますか?

+1

'replace'メソッドは' Array'オブジェクトではなく、文字列に対してのみ使用できます。 'all_boxes_values'の実際の値を置き換えるためのループを作成します。 – Teemu

答えて

11

alert(some_array)は配列の文字列表現を出力しますが、配列自体は文字列ではありません。したがって、.replaceはありません。 alertはアラートボックスに文字のみを表示できるため、強制的に文字列に変換します。

カスタムセパレータを使用するだけで参加できます。

  1. 代わりオブジェクトと特に有用で(実際のオブジェクト/配列の代わりに文字列表現を示す:joinがアレイの関数である:それがためサイドノートとして

    var all_boxes_values_clean = all_boxes_values.join(", "); 
    

    、Iはalertconsole.logを勧め

  2. )あなたは alertで受け取る無用 [object Object]のは、yのよう
  3. たびは、他のログを追跡し、ポップアップを閉じてからあなたを解放しますOUは
+0

パーフェクト、あまりにも説明のためにありがとう:) – TheCarver

+0

こんにちは@pimvdb、 あなたはpleazこの質問に答えることができますhttp://stackoverflow.com/questions/22653866/has-no-method-replace-with-jquery-flot-tooltip- js ありがとう – sunil

4

all_boxes_valuesが配列ではなく文字列であるログの実際のログを持っているので、それが何のreplaceメソッドを持っていません。 all_boxes_values.toString()

あなたは正規表現を実行することを主張した場合、最初の文字列に配列を変換する

var all_boxes_values_clean = all_boxes_values.join(", "); 

を試してみてください。

関連する問題