Soucis avec .indexOf() sous IE8
Bonjour à tous,
Voila mon soucis : j'ai deux fichiers, IHM.js et search.js
Dans les deux fichiers j'utilise la fonction .indexOf() pour rechercher quelque choses de précis dans un tableau.
Sous IE8, cette fonction n'est pas connus, il faut donc la créé avec ceci :
[CODE]if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(elt /*, from*/){
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++){
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
Jusqu'ici, vous me direz, tous vas bien, sauf que... lorsque je rajoute la fonction ci-dessus pour créé le .indexOf(), les .indexOf() qui sont dans le fichier search.js ne fonctionnent pas alors que ceux contenus dans le fichier IHM.js, eux, fonctionnent.
Et inversement, si je commente ou supprime la fonction si dessus, les .indexOf() du fichier search.js fonctionnent et ceux de IHM.js, ne fonctionnent plus..
J'ai testé plein de façons différente, .inArray() de jQuery, des aides de nombreux sites.
Sur mon application, j'utilise : jQuery, jQuery ui, bootstrap, HTML, CSS et JavaScript
Voici les partie de code où j'utilise .indexOf() :
IHM.js :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| function addOrRemoveDiv(checkbox, name){
//si la checkbox est activé
if (checkbox.checked){
//on cherche si la div existe dans le tableau
var i = DivActive.indexOf(name);
//si elle n'existe pas
if(i == -1){
DivActive.push(name);
}
}
else{
//si la checkbox est décoché
var i = DivActive.indexOf(name);
if(i != -1){
DivActive.splice(i, 1);
}
}
} |
search.js :
Code:
1 2 3 4 5 6 7 8
| if(( tableSearch.indexOf(value.toLowerCase()) > -1 ) || ( database[x]['name'].toLowerCase().indexOf(value.toLowerCase()) > -1 ) || (key.search(new RegExp(value,'gi')) > -1)){
nbrValue = Compter(tableSearch, value.toLowerCase());
nbrKey = Compter(key, value.toLowerCase());
nbrOccurence = nbrValue + nbrKey;
var viewValue = key.split('_');
resultSearch.innerHTML += '<a class="btn btn-success" style="margin-top: 3px;" href="#" onclick="openDialog(\''+viewValue[1]+'\'); document.getElementById(\'fieldSearch\').value = \'\'; searchInput(\'\');" >' + viewValue[0] + ' ' + database[x]['name'] + '</a> - <i style="font-size: 80%;">Occurence(s) for "'+value+'": <strong>'+nbrOccurence+'</strong></i><br/>';
trouve = true;
} |
search.js :
Code:
1 2 3
| function Compter(s, c){
return ((p = s.toLowerCase().indexOf(c)) != -1) ? Compter(s.substr(p + 1), c) + 1 : 0 ;
} |
Merci d'avance pour vos réponses :)