IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Soucis avec .indexOf() sous IE8


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Sujet résolut
    Voici la fonction complète pour IHM.js si jamais elle peut aidé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function addOrRemoveDiv(checkbox, name)
    {
     
        //si la checkbox est activée
        if (checkbox.checked)
        {
            //on cherche si la div existe dans le tableau
            var lng = DivActive.length;
            while (lng-- && DivActive[lng]!= name);
     
            //si elle n'existe pas
            if (lng<0) {
            	DivActive.push(name);
            }
        }
        else
        {   //si la checkbox est décochée
            var lng = DivActive.length;
            while (lng-- && DivActive[lng]!= name);
     
            if (lng>=0) {
            	DivActive.splice(lng,1);
            }
        }
    }
    Grace à cette fonction, plus besoin de créé la fonction .indexOf() et search.js fonctionnent bien sans donc.. on vas pas ce plaindre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2010, 09h01
  2. Soucis avec Java sous Mac OS X
    Par moila dans le forum Langage
    Réponses: 1
    Dernier message: 16/10/2009, 13h33
  3. [AJAX] Souci avec HTTPRequest sous IE en SSL
    Par DjChat dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 04/03/2009, 11h21
  4. [Tableaux] souci avec array_push sous firefox
    Par gregetso dans le forum Langage
    Réponses: 4
    Dernier message: 02/02/2009, 14h16
  5. Souci avec DlPortIO sous BDS 2006
    Par kurul1 dans le forum C++Builder
    Réponses: 33
    Dernier message: 27/10/2008, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo