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 :

boucle getElementById disabled


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 122
    Par défaut boucle getElementById disabled
    Bonjour,

    J'ai un code qui marche sous IE9 mais pas sous Firefox 11.0 ni Chrome 18.0.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    // boucle sur $i
    ...
    onclick='if (document.getElementById(\"ligne[$i]\").disabled==false
    document.getElementById(\"ligne[$i]\").disabled=true
    else window.document.getElementById(\"ligne[$i]\").disabled=false ;'>" ;
     
    <p id='ligne[$i]' ...>
    Le paragraphe "p" contient du texte et un select.
    Sous IE, sur clic le texte et le selec de "p" se "disabled" puis se "enable".
    Sous FirexFox et Chrome ça ne marche pas.

    Une idée ???

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    c'est quoi ce onclick avec du texte et des ' et \"
    je ne comprends rien

    j'imagine que ce que tu veux faire c'est ajouter un lien avec un boucle for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var ElementOuPlacerLesLiens = document.getElementById('IdDeLElementOuPlacerLesLiens');
     
    for (var i=0; i<max; i++) {
      var lien = document.createElement('A');
      lien.setAttribute('href', '#');
      lien.onclick = function() {
        if(document.getElementById('ligne[' + $i + ']').disabled==false) {
          document.getElementById('ligne[' + $i + ']').disabled=true;
        } else {
          document.getElementById('ligne[' + $i + ']').disabled=false;
        } 
      }
      ElementOuPlacerLesLiens.appendChild(lien);
    }
    si ton tag p est généré dans la boucle for c'est encore plus simple
    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
    var ElementOuPlacerLesLiens = document.getElementById('IdDeLElementOuPlacerLesLiens');
    var ElementOuPlacerLesParagraphes = document.getElementById('IdDeLElementOuPlacerLesParagraphes');
     
    for (var i=0; i<max; i++) {
      var lien = document.createElement('A');
      lien.setAttribute('href', '#');
      lien.para = document.createElement('P');
      //...
     
      lien.onclick = function() {
        if(this.para.disabled==false) {
          this.para.disabled=true;
        } else {
          this.para.disabled=false;
        } 
      }
      ElementOuPlacerLesLiens.appendChild(lien);
      ElementOuPlacerLesParagraphes.appendChild(lien.para);
    }
    enfin si IE9 accepte ton code, je crois que M$ n'a pas fait beaucoup de progrès car il n'est absolument pas conforme à la norme et plein d'erreur de syntaxe.

    A+JYT

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 122
    Par défaut ok
    Thanks a lot sekaijin,... mais en te lisant je m'aperçois que je n'ai pas posté ma question au bon endroit... En effet, je débute en JS et en fait ce petit bout de code JS est dans du PHP : à l'intérieur d'un TAG j'ai le onscript='...' donc c'est plutôt dans le forum PHP que je vais le poster.

    JP

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je te déconseille de généré le js en php
    mieux vaut un fichier switch.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function switch(paraId) {
      var para = document.getElementById(paraId);
      if(para.disabled==false) {
        para.disabled=true;
      } else {
        para.disabled=false;
      }
      return false; 
    }
    et dans le php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ?><a onclick="return swtich('<?php echo ligne[$i]; ?>')">click</a><?php ;

    A+JYT

  5. #5
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Il manquait la parenthèse fermante dans la condition JS.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<input type='checkbox' onclick='if(document.getElementById(\"ligne[$i]\").disabled==false)document.getElementById(\"ligne[$i]\").disabled=true;else document.getElementById(\"ligne[$i]\").disabled=false;'>";

    On aurait pu simplifier...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="checkbox" onclick="document.getElementById(ligne[$i]).disabled=!document.getElementById(ligne[$i]).disabled;">';

    Mais si tu débutes en JS, le mieux est de commençer à suivre les bonnes pratiques comme celles recommandées par sekaijin.

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je te conseille tout de même de mettre ton javasript dans un fichier js ton php sera plus propre et lisible
    mais surtout tu bénéficira de l'efficacité du navigateur

    j'ai donné une explication ici

    A+JYT

Discussions similaires

  1. getElementById disabled true
    Par CoudJM dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/07/2012, 09h26
  2. getElementById en boucle
    Par chuckichucki dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/01/2011, 17h01
  3. boucle et getElementById()
    Par kohsaka dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2009, 15h38
  4. document.getElementById('code').disabled = true;
    Par tofito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/01/2009, 14h33
  5. Boucle avec document.getElementById
    Par Sancho_54 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 07/03/2007, 15h47

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