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

Signaler
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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';
}
}
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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... :-(