L'objet n'a pas de méthode «remplacer»
-
28-10-2019 - |
Question
J'essaie d'exécuter cette fonction, qui saisit toutes les valeurs cochées cochées dans une chaîne séparée par virgule et convertit ","
dans ", "
, donc ça lit mieux. Le problème est que j'obtiens une erreur étrange:
$('.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);
});
L'erreur de la console dit:
Non apparié TypeError: Object Aaron Ramsey, Aaron Renfree n'a pas de méthode «remplacer».
Je n'obtiens pas la boîte à alerte.
C'est un peu au-delà de moi, quelqu'un peut-il expliquer ce que je fais de mal?
La solution
Bien que alert(some_array)
Imprime une représentation de chaîne du tableau, le tableau lui-même n'est pas une chaîne. Ainsi, il n'a pas .replace
. alert
est obligé de le convertir en une chaîne car le boîtier d'alerte ne peut afficher que des caractères.
Vous pouvez simplement rejoindre à l'aide d'un séparateur personnalisé, cependant. join
est une fonction des tableaux:
var all_boxes_values_clean = all_boxes_values.join(", ");
En tant que note latérale, je recommande console.log
plus de alert
parce qu'il:
- montre l'objet / tableau réel au lieu d'une représentation de chaîne (particulièrement utile avec des objets au lieu de l'inutile
[object Object]
vous recevez avecalert
) - vous libère de la fermeture de la fenêtre contextuelle à chaque fois
- Gardez une trace des autres journaux afin que vous ayez un journal réel de journaux
Autres conseils
all_boxes_values
est un tableau, pas des cordes et donc elle n'a pas replace
méthode.
Essayer
var all_boxes_values_clean = all_boxes_values.join(", ");
Si vous insistez pour effectuer des expressions régulières, convertissez d'abord un tableau en chaîne: all_boxes_values.toString()
.