IndexOf n'est pas une fonction dans Firefox, Opera, mais fonctionne dans IE, indexOf alternative en javascript pour que la chaîne de test contienne?

Obtenir une erreur en utilisant l'indexOf en Javascript sur Firefox et Opera. Fonctionne bien dans IE.

Voici le message d'erreur:

action

function anonymous(Grid, Row, Col, Event) { return Grid.ActionShowPopupMenu(); } 

Pour l'événement OnRightClick a échoué à l'exception: row.id.indexOf n'est pas une fonction

Je teste qu'une chaîne contient une autre chaîne en Javascript et utilise la fonction indexOf d'une chaîne. Les appels sont cependant effectués dans les fonctions JQuery. C'est peut-être la raison du problème? Existe-t-il une alternative à l'utilisation d'indexOf en Javascript pour tester si une chaîne contient une autre chaîne? Existe-t-il une solution pour ce problème?

String.indexOf est parfaitement correct dans tous les navigateurs. Je suppose que la propriété id de votre objet de ligne n'est pas une chaîne (ni array, btw, car indexOf est également défini sur des tableaux (à l'exception d'IE))

IndexOf n'est pas correct pour IE avant IE9. Si vous souhaitez que votre code fonctionne, c'est-à-dire <9, vous devez définir la méthode pour les navigateurs non conformes dans un fichier js commun qui peut être déposé dans chaque page. Voir ce sujet pour plus de détails. Le code est extrait de Mozilla

 if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; if (this == null) { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; if (len === 0) { return -1; } var n = 0; if (arguments.length > 1) { n = Number(arguments[1]); if (n != n) { // shortcut for verifying if it's NaN n = 0; } else if (n != 0 && n != Infinity && n != -Infinity) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } if (n >= len) { return -1; } var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); for (; k < len; k++) { if (k in t && t[k] === searchElement) { return k; } } return -1; } } 

IndexOf () est correct pour tous les navigateurs. Il est conçu pour les deux, String et Array, voir ceci: http://jsfiddle.net/SquTp/

Il y a peut-être quelque chose qui ne va pas avec votre sélection de dom, ou vous pouvez l'utiliser de manière incorrecte.