[DOM]Conserver une valeur après ajout d'un child [Résolu]

Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- - Dernière réponse : malalam
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 10 mars 2006 à 17:13
Hello,

le titre n'est pas super clair parce que je ne savais pas comment résumer.

J'appelle une fonction sur un évènement (onchange d'un select : bref, quand on clique sur une de ses options, et il n'y a pas de submit du formulaire). Cette fonction fait ceci :
Elle ajoute dans un div A, une série d'élément : un autre div Bd[n], qui contient elle une image Bi[n], du texte, et un input type text Bt[n].
Sur l'image, un évènement onclick déclenche la suppression de sa div Bd[n]. (si on s'est planté, quoi).
On peut évidemment appeler autant de fois cette fonction, pour ajouter à ma div A, autant de div Bd[n] que l'on veut.
Le truc, c'est que si on fait apparaître 1 div Bd[n], et qu'on saisit quelque chose dans l'input correspondant Bt[n], puis que l'on resélectionne une autre option pour faire apparaître une nouvelle div Bd[n+1], la valeur de Bi|n] revient à sa valeur par défaut (0).
Je voudrais conserver cette valeur.
Je ne pige pas, vu que je ne fais qu'ajouter quelque chose au innerHTML de div A, je ne réécris pas tout (à priori).

Voici ma fonction :

function displayChoice (art_id, sk_id, sk_lib) {
div = document.getElementById('affChoixEmp['+art_id+']');
if (check = document.getElementById('empId['+art_id+']['+sk_id+']')) {
return false;
} else {
div.innerHTML += '
 '+sk_lib+' 
';
}
}

Quelqu'un a une solution?

Merci :-)
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
31
3
Merci
Bon c'est fait.

Pour ceux que ça intéresse :

function displayChoice (art_id, sk_id, sk_lib) {
div = document.getElementById('affChoixEmp['+art_id+']');
if (check = document.getElementById('empId['+art_id+']['+sk_id+']')) {
return false;
} else {
emp = document.createElement ('div');
empId = div.appendChild (emp);
empId.id = 'empId['+art_id+']['+sk_id+']';


bt = document.createElement ('img');
bouton = empId.appendChild (bt);
bouton.src='img/pic.close.gif';
bouton.title='Supprimer';
bouton.alt='Supprimer';
bouton.style.cursor='pointer';
bouton.id='img['+art_id+']['+sk_id+']';
d = document.getElementById('img['+art_id+']['+sk_id+']');
d.onclick = function () {div.removeChild(document.getElementById('empId['+art_id+']['+sk_id+']'));};


lib = document.createTextNode (' '+sk_lib+' ');
empId.appendChild (lib);


inp = document.createElement ('input');
input = empId.appendChild (inp);
input.type='text';
input.name='sk_art_quantite['+art_id+']['+sk_id+']';
input.id='sk_art_quantite['+art_id+']['+sk_id+']';
valeur = document.getElementById('sk_art_quantite['+art_id+']['+sk_id+']');
valeur.value= '0';
}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de malalam
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
31
0
Merci
Bon en fait j'ai compris, c'était stupide.
Pas encore résolu, mais j'ai compris... ;-)
La valeur de l'input a changé, pas le innerHTML de ma div, qui est une chaine...la chaine n'a pas été modifiée.
Va sans doute falloir passer complètement par DOM, ce qui va faire un code un peu plus long... :-(
Commenter la réponse de malalam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.