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

Résolu
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 10 mars 2006 à 15:47
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre 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 :-)

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 mars 2006 à 17:13
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';
}
}
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 mars 2006 à 16:17
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... :-(
0
Rejoignez-nous