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] Comment modifier via le DOM les attributs d’un champ INPUT ?


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut [DOM] Comment modifier via le DOM les attributs d’un champ INPUT ?
    Ce sujet est lié au sujet « compteur de ligne - mise à jour » mais concerne plus la partie DOM.
    Je souhaite savoir comment on peut modifier les attributs d’un champ input (name, id, value) qui se trouve dans un tableau.
    Exemple
    La fonction ci-dessous remplace la valeur du champ input par le numéro de ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function majNumLignes(){
    		for(var i = 0 ; i < nbLignesNew ; i++){
    		var tbl = document.getElementById('tabprincing');
    		//Mise a jour de la cellule 1
    		tbl.tBodies[0].rows[i].getElementsByTagName('TD')[1].innerHTML = (i+1);
     
    		//Mise a jour de la cellule 2
    		tbl.tBodies[0].rows[i].getElementsByTagName('TD')[2].innerHTML = (i+1);
    	}
    }
    Comment peut-on le faire sans utiliser le innerHTML ?
    Comment modifier le nom du champ (name) par …. Nomduchamp + i ?
    et pour bien comprendre et si devait changer l'id du champ ...

    Par avance un très grand merci à ceux qui m'éclaireront.
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Tu peux utiliser setAttribute pour modifier un attribut d'un élément.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    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
    la syntaxe avec id ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idElement').value="machin chouette";
    avec la syntaxe form et name :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['nomduform'].elements['namedeElement'].value='coucou'
    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 !

  4. #4
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    Merci pour vos interventions, mais elles ne répondent pas vraiment à mes attentes.

    J'ai essayé la solution de Marcha, (voir page de test)
    j'ai du loupé une étape.

    Concernant la proposition de SpaceFrog : étant donné que mes id ou nom changent, difficile de les identifier pour en modifier leur attributs.
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  5. #5
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    Peut-on faire autrement ?

    page de test
    Objectif : incrémenter automatiquement le nom d'un champ

    en utilisant innerHTML :
    tbl.tBodies[0].rows[i].getElementsByTagName('TD')[2].innerHTML = "<input type='text' name='montant_vente"+(i+1)+"' size='20' value='"+(i+1)+"'> ";

    en n'utilisant pas le innerHTML :
    tbl.tBodies[0].rows[i].getElementsByTagName('TD')[2].getElementsByTagName('INPUT')[0].setAttribute('name','montant_vente'+(i+1));
    tbl.tBodies[0].rows[i].getElementsByTagName('TD')[2].getElementsByTagName('INPUT')[0].setAttribute('value',(i+1));

    Y at-il plus simple et plus élégant ?
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  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
    Je ne comprends pas à quel moment tu créées le champs input ??
    je ne vois pas de difficulté particulière à nomme un chmaps, mais je ne comprends pas ton, cheminement ...

    Pourquoi et comment et où ajoutes tu des champs ?
    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
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par tavarlindar Voir le message
    tbl.tBodies[0].rows[i].getElementsByTagName('TD')[2].getElementsByTagName('INPUT')[0].setAttribute('name','montant_vente'+(i+1));
    tbl.tBodies[0].rows[i].getElementsByTagName('TD')[2].getElementsByTagName('INPUT')[0].setAttribute('value',(i+1));
    Y at-il plus simple et plus élégant ?
    Salut,

    Tu es sur la bonne voie, a part que ton bouton delete supprime toujours la
    dernière ligne et pas la ligne courante ?

    Sinon tu peux écrire ça ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var row = tbl.tBodies[0].rows[i];
    var champs = row.getElementsByTagName('TD')[2].getElementsByTagName('INPUT')[0];
    champs.setAttribute('name','montant_vente'+(i+1));
    champs.setAttribute('value',(i+1));
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

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

Discussions similaires

  1. Comment interpréter XML et lire les attributs
    Par yvon_huynh dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 15/02/2015, 13h29
  2. Réponses: 5
    Dernier message: 22/01/2009, 10h20
  3. [DOM] [IE6] Définir l'attribut type d'un champ input
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/01/2008, 17h27
  4. [MySQL] Comment mettre à jour en conservant les données actuelles d'un champs
    Par MisterMacPhisto dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 17/04/2007, 15h49
  5. [DOM] héritage "onmouseover" via le dom
    Par arena94 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/10/2006, 00h06

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