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 :

[DOM] Fonction JS ne voulant pas fonctionner sous IE


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [DOM] Fonction JS ne voulant pas fonctionner sous IE
    Bonjour,

    Je ne comprend pas pouquoi ma fonction JS ne marche pas sous IE (testé seulement sous IE7)...
    Pour que vous puissiez m'aider, je vous la donne :

    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
    function doc(type, i)
    {
    	var code = '';
    	if (type == "photo")
    	{
    		//<![CDATA[
    		code += '<label>Fichier :</label><input type="file" name="file_' + i + '" /><br />';
    		//]]>
    	}
    	else if (type == "video")
    	{
    		//<![CDATA[
    		code += '<label>Depuis quel Site ?</label><select name="site_' + i + '" disabled="disabled">';
    		code += '	<option value="youtube" selected="selected">Youtube.com</option>';
    		code += '	<option value="daylimotion">Daylimotion.com</option>';
    		code += '</select><br />';
    		code += '<label>Lien de la vidéo :</label><input type="text" name="file_' + i + '" /><br />';
    		//]]>
    	}
     
    	document.getElementById('doc_' + i).innerHTML = code;
    }
    Le but de cette fonction est de faire changer ce qu'il y a dans une div en fonction que le bouton radio soit positionner sur Image ou Vidéo...

    Merci d'avance pour votre aide
    The Climber

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    pour ajouter des composants HTML (input, label, select) dans une page il vaut mieux utiliser des fonctions DOM plutôt qu'innerHTML.

    - voir :
    createElement()
    appendChild()
    - pour le select :
    voir l'objet new Option() et la fonction add de l'objet select.option.

    Exemple de manipulation du DOM

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    et il n'existe pas d'autre moyen ???

    Car le dom je n'y comprend rien...

    Mais merci déjà pour la réponse...

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Citation Envoyé par The Climber Voir le message
    et il n'existe pas d'autre moyen ???

    Car le dom je n'y comprend rien...
    pas d'autres moyens. Pour le DOM rien de bien méchant, il suffit d'être organisé

    Par exemple (dans le cas if (type == "photo")) :
    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
     
    var monLabel, txtLabel;
    var monInput;
    var monBR;
    var formulaire;
     
    // création du label
    monLabel = document.createElement("label"); // création du label
    txtLabel = document.createTextNode("Fichier :"); // création du texte du label
    monLabel.appendChild(txtLabel); // insertion du noeud texte dans le label
     
    // création de l'input
    monInput = document.createElement("input");
    monInput.type = "file";
    monInput.name = "file_" + i;   // /!\ non pris en charge par IE
    monInput.id = "file_" + i;
     
    // création du saut de ligne :
    monBR = document.createElement("br");
     
    // ajout des composants dans le formulaire
    formulaire = document.getElementById("idFormulaire"); // formulaire = balise form !
    formulaire.appendChild(monLabel);
    formulaire.appendChild(monInput);
    formulaire.appendChild(monBR);
    Attention :
    - IE n'accepte pas l'attribution d'une valeur à l'attribut name dans un script. Pour "palier" à ce problème, j'ai donné à name et id la même valeur.
    - FF refuse que les balises de dédiées aux formulaires (input, label, select, etc.) soient insérées en dehors d'une balise form ! Tu dois donc insérer tes composants dans une balise form.

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour le code que tu m'as donné, mais par contre j'ai une autre question :
    Comment on fait pour donner un Name avec IE ???

    Car j'utilise ce code dans un formulaire traité par PHP et j'ai absolument besoin d'un Name...

    Merci d'avance...
    The Climber

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Au pire dasn les contribution sil y a une petit librairie qui permet de créer facilement des objets avec le DOM
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    SpaceFrog propose cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var str = "<input name='file_'"+i+">";
    monInput = document.createElement(str);
    Dans ce cas l'input aura un name.

    Gros problème : cette syntaxe n'est pas valide sous FF

    Donc écris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if (document.all)  // pour IE
    {
      var str = "<input name='file_'"+i+">";
      monInput = document.createElement(str);
    }
    else  
    { // pour FF et autres navigateurs
      monInput = document.createElement("input");
    }
     
    // suite du code :
    monInput.type = "file";
    //... etc.
    ou plus subtil :
    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
     
    // création de l'input
    try
    {
      // ce code génère une exception sous FF => le contenu du catch est exécuté
      // ce code sera exécuté sans problème sous IE
      var str = "<input name='file_'"+i+">";
      monInput = document.createElement(str);
    }
    catch(erreur) 
    {
      monInput = document.createElement("input");
    }
     
    // suite du code :
    monInput.type = "file";
    //... etc.

  8. #8
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok...

    Merci Auteur. Je testerais ce soir à la maison...
    et je verrais après quoi comment...

    @ +

  9. #9
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok ben tout est ok...

    Sa fonctionne

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    attention j'ai fait une faute de frappe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (document.all)  // pour IE
    {
      var str = "<input name='file_"+i+"'>";
      monInput = document.createElement(str);
    }
    else  
    { // pour FF et autres navigateurs
      monInput = document.createElement("input");
    }
    je n'ai pas mis la simple quote au bon endroit

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

Discussions similaires

  1. htaccess ne semble pas fonctionner sous IE8
    Par pierrot10 dans le forum Apache
    Réponses: 3
    Dernier message: 21/06/2011, 17h36
  2. [AJAX] Ma fonction Ajax ne semble pas fonctionner
    Par alejandro dans le forum AJAX
    Réponses: 1
    Dernier message: 04/04/2009, 21h07
  3. fonction fonctionnant sous IE et pas sous FF
    Par dubitoph dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/07/2007, 13h09
  4. [DOM] Script qui ne semble pas fonctionner sous IE 6 et 7
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2007, 16h50
  5. fonction javascript fonctionnant sous firefox mais pas sous IE
    Par calitom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/03/2007, 12h56

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