Je cherche à écrire un compteur qui affiche en temps réél le nombre de caractères entrés dans une textarea. Voila ce que j'ai fait :
et la textarea (généré avec DOM :
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 function calculus(count) { var id = 'message'+count; var content = document.getElementById(id).firstChild.data; var len; if (content=="undefined") { len = 0; } else { len = content.length; } var remain = maxCount-len; var container = document.getElementById('counter'); var oldContent = container.firstChild.data; var oldLen = oldContent.length; container.firstChild.replaceData(0,oldLen,remain); }
Résultat, quand je charge la page et que des données se trouvent deja dans la textarea (dans le TextNode textc), le champs se met à jour correctement. Mais quand j'entre des caractères ou que j'en supprime, ça ne se met pas à jour. Pourtant, en mettant des alert() dans ma fonction calculus, je vois que, grâce à l'event onKeyDown, ma fonction est bien appellée. Mais quand j'affiche mon "content", il est inchangé. Comment est-ce possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 textarea1.setAttribute('id','message'+counter); textarea1.setAttribute('class','txt_area3'); textarea1.setAttribute('onKeyDown','calculus('+counter+')'); var textc = document.createTextNode(tabPushs[counter][3]); textarea1.appendChild(textc);
Partager