2012-02-21 84 views
6

我試着運行這個函數,它將所有選中的複選框值截取爲逗號分隔的字符串,並將","轉換爲", ",所以它讀得更好。問題是,我得到一個奇怪的錯誤:對象沒有方法'替換'

$('.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'-method只能用於字符串,不能用於'Array'對象。創建一個循環來替換'all_boxes_values'中的實際值。 – Teemu 2012-02-21 21:58:12

回答

11

雖然alert(some_array)打印數組的字符串表示,但數組本身不是字符串。因此,它沒有.replacealert被迫將其轉換爲字符串,因爲警告框只能顯示字符。

雖然您可以簡單地使用自定義分隔符進行連接。 join是陣列的一個函數:

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

作爲邊注,我建議console.logalert,因爲它:

  1. 示出了實際的對象/數組代替的字符串表示(與對象,而不是特別有用的無用[object Object]您收到alert
  2. 免費從每次關閉彈出
  3. 跟蹤其他日誌,以便y OU有日誌的實際日誌
+0

完美,謝謝你的解釋太:) – TheCarver 2012-02-21 21:59:13

+0

嗨@pimvdb, 你可以懇求回答這個問題http://stackoverflow.com/questions/22653866/has-no-method-replace-with-jquery-flot-tooltip- js 謝謝 – sunil 2014-03-26 07:23:03

4

all_boxes_values是一個數組,而不是一個字符串,因此它沒有replace方法。

嘗試

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

如果你堅持執行正則表達式,轉換數組字符串第一:all_boxes_values.toString()