jQuery pour… dans toUpperCase n’est pas une fonction

Avec une entrée typique comme ci-dessous …

Department one 

dans ma fonction …

 var chksDept = $('input[type=checkbox].actEmail:checked'); var depts = Array(); chksDept.each(function() { depts.push($(this).data('value').toUpperCase()); }); 

Pourquoi j’ai eu l’erreur:

$(...).data(...).toUpperCase() n’est pas une fonction?

Ce dont j’ai besoin, c’est de saisir toutes les données en majuscules.

La valeur renvoyée par this $(this).data('value') est du type number . C’est à dire:

 console.log(typeof $(this).data('value')); 

Vous devez d’abord vérifier s’il s’agit d’un number , puis le convertir en ssortingng . Ainsi:

 var chksDept = $('input[type=checkbox].actEmail:checked'); var depts = Array(); chksDept.each(function() { var data = $(this).data('value'); if (typeof data === 'number') { data = ""+data; } depts.push(data.toUpperCase()); }); console.log(depts); 

En effet, data méthode data-value='1' atsortingbut data-value='1' renvoie un nombre et que l’object Number n’a pas de méthode toUpperCase , en supposant que vos atsortingbuts toUpperCase data-* contiennent des valeurs numériques et non numériques et que vous souhaitez convertir les valeurs non numériques valeurs majuscules, vous pouvez utiliser la méthode attr place qui renvoie une chaîne.

 $(this).attr('data-value').toUpperCase(); 

http://jsfiddle.net/B8FRE/

Cela se produit lorsque data-* atsortingbuts data-* sont mappés sur la propriété dataset des éléments et qu’il existe une différence entre les propriétés et les atsortingbuts d’un élément.