我尝试运行此功能,将所有选中的复选框值抓取到以逗号分隔的字符串中,并将","
转换为", "
,以便更好地读取。问题是我遇到了一个奇怪的错误:
$('.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:对象Aaron Ramsey,Aaron Renfree没有方法'替换'。
我没有收到警报框。
这有点超出我的意思,任何人都可以解释我做错了吗?
答案 0 :(得分:11)
虽然alert(some_array)
打印了数组的字符串表示形式,但数组本身不是字符串。因此,它没有.replace
。 alert
被强制将其转换为字符串,因为警告框只能显示字符。
但您可以使用自定义分隔符进行简单连接。 join
是数组的函数:
var all_boxes_values_clean = all_boxes_values.join(", ");
作为旁注,我建议console.log
优先于alert
因为它:
[object Object]
收到的无效alert
)答案 1 :(得分:4)
all_boxes_values
是一个数组,而不是字符串,因此没有replace
方法。
尝试
var all_boxes_values_clean = all_boxes_values.join(", ");
如果您坚持执行正则表达式,请先将数组转换为字符串:all_boxes_values.toString()
。