[javascript] Incrémentation impossible ?!
Résolu
Erdnax
Messages postés
2279
Statut
Contributeur
-
Marden Messages postés 1075 Statut Membre -
Marden Messages postés 1075 Statut Membre -
Bonjour à tous,
Voilà, je suis pas un pro du javascript, mais d'habitude je m'en sort.
Là j'ai un problème assez simple, mais que je n'arrive pas à résoudre. J'ai un champ texte de formulaire contenant un chiffre. Au clique sur un bouton, j'aimerais que cette valeur s'incrémente d'un, ou se "désincrémente". Voilà le code javascript :
Et ça, c'est mon formulaire, avec un bouton pour réduire la valeur, le champ texte, et un bouton pour augmenter la valeur.
Merci à ceux qui se pencheront sur mon problème ;)
@+
Voilà, je suis pas un pro du javascript, mais d'habitude je m'en sort.
Là j'ai un problème assez simple, mais que je n'arrive pas à résoudre. J'ai un champ texte de formulaire contenant un chiffre. Au clique sur un bouton, j'aimerais que cette valeur s'incrémente d'un, ou se "désincrémente". Voilà le code javascript :
<script language="javascript" type="text/javascript">
function moins(){
var ou = document.getElementById('code');
ou.value = ou.value - 1;
}
function plus(){
var ous = document.getElementById('code');
ous.value = ous.value+1;
}
</script>
Et ça, c'est mon formulaire, avec un bouton pour réduire la valeur, le champ texte, et un bouton pour augmenter la valeur.
<input type="button" value="-" onclick="moins()"> <input maxLength="4" size="2" value="20" id="code" name="code" > <input type="button" value="+" onclick="plus()">Mon problème : lorsque je clique sur le moins, tout se passe bien, mais lorsque je clique sur le plus, il rajoute un 1 à la fin de ma valeur, comme si cette dernière était interprétée en tant que chaîne et non comme chiffre. D'où est-ce que vient la différence entre le moins et le plus ?
Merci à ceux qui se pencheront sur mon problème ;)
@+
A voir également:
- [javascript] Incrémentation impossible ?!
- Telecharger javascript - Télécharger - Langages
- Javascript void 0 c'est quoi ✓ - Forum Réseaux sociaux
- Javascript echo ✓ - Forum PHP
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- A javascript error occurred in the main process - Forum Windows
4 réponses
ous.value = ous.value+1;
Essayez peut-être de remplacer toute cette ligne par :
ous.value++
les window.document.form.textfield.value semblent être des nombres mais se comportent parfois bizarrement
Je sais pas
Essayez peut-être de remplacer toute cette ligne par :
ous.value++
les window.document.form.textfield.value semblent être des nombres mais se comportent parfois bizarrement
Je sais pas
Oups, désolé, résolu.
Je n'avais peut-être pas cherché assez ? Posté trop vite... Désolé.
@+
P.S. Si y en a que ça intéresse, j'ai très simplement fais un ous.value++ ... pas cherché assez qu'j'ai dis...
Je n'avais peut-être pas cherché assez ? Posté trop vite... Désolé.
@+
P.S. Si y en a que ça intéresse, j'ai très simplement fais un ous.value++ ... pas cherché assez qu'j'ai dis...
Comme je l'ai dis dans mon post numéro 2 ^^, c'est ce que j'ai essayé, et ça à marché ;)
Merci d'avoir pris le temps (même inutillement lol) de me répondre.
@+ ;)
Merci d'avoir pris le temps (même inutillement lol) de me répondre.
@+ ;)
Le Javascript est effectivement un langage modérément typé. Le plus souvent, c'est le contenu initial d'une variable qui détermine son type, lequel peut d'ailleurs changer pendant le déroulement du script.
Il semble que les zones d'un formulaire soient, à priori, de type "chaîne", auquel cas les opérations numériques doivent être précédées d'une opération de conversion (par exemple, via "parseInt").
Les deux opérations pourraient être traitées par une même fonction du genre :
A l'appel, il convient alors d'utiliser un argument :
modiferZone(-1)
modifierZone(1)
Il semble que les zones d'un formulaire soient, à priori, de type "chaîne", auquel cas les opérations numériques doivent être précédées d'une opération de conversion (par exemple, via "parseInt").
Les deux opérations pourraient être traitées par une même fonction du genre :
function modifierZone(inc) {
{form}.{zone}.value = parseInt({form}.{zone}.value) + inc ;
}
A l'appel, il convient alors d'utiliser un argument :
modiferZone(-1)
modifierZone(1)
Merci pour ces explications claires,
pour les paramètres entre les paranthèses, je connaissais, mais ce que je comprenais pas, c'est pourquoi, lorsque j'appliquais un moins, le contenu était bien compris en tant que nombre, alors que pour le plus, il prenait ça comme un chaîne... Pourquoi une différence en fonction du type de traitement ?
Enfin bon, du moment que ça fonctionne...
pour les paramètres entre les paranthèses, je connaissais, mais ce que je comprenais pas, c'est pourquoi, lorsque j'appliquais un moins, le contenu était bien compris en tant que nombre, alors que pour le plus, il prenait ça comme un chaîne... Pourquoi une différence en fonction du type de traitement ?
Enfin bon, du moment que ça fonctionne...
Je pense, mais n'en donnerais pas ma tête à couper, que c'est lié au mode de fonctionnement de l'interpréteur, variable selon les constructeurs. Dans le cas "qui marche", on peut supposer que, à la rencontre du signe "-", l'interpréteur "s'attend à" une valeur numérique, et exécute automatiquement un "cast" avant d'effecter l'opération. L'opérateur unaire "-" est une des difficultés classiques de l'écriture d'un interpréteur.
Personnellement, et pour éviter de m'encombrer le cerveau, j'ai choisi de ne garder que la méthode que je préconise.
Dans le même ordre d'idées, la démarche de l'interpréteur explique que les messages d'erreurs ne soient pas toujours explicites (ex : unexpected ")" fait sans doute référence au premier choix valide parmi d'autres possibilités qui, elles, ne sont pas signalées).
Personnellement, et pour éviter de m'encombrer le cerveau, j'ai choisi de ne garder que la méthode que je préconise.
Dans le même ordre d'idées, la démarche de l'interpréteur explique que les messages d'erreurs ne soient pas toujours explicites (ex : unexpected ")" fait sans doute référence au premier choix valide parmi d'autres possibilités qui, elles, ne sont pas signalées).