Une erreur de syntaxe Javascript
Fermé
new-dev
Messages postés
17
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
6 février 2017
-
12 déc. 2016 à 13:15
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 13 déc. 2016 à 10:15
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 13 déc. 2016 à 10:15
A voir également:
- Une erreur de syntaxe Javascript
- Erreur 0x80070643 - Accueil - Windows
- Telecharger javascript - Télécharger - Langages
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 38 free ✓ - Forum Mobile
4 réponses
Utilisateur anonyme
12 déc. 2016 à 13:58
12 déc. 2016 à 13:58
Bonjour
Tu as des apostrophes inutiles autour de <?php echo $age; ?>, car age est un nombre et n'a pas à être écrit entre apostrophes.
Mais ça ne devrait pas empêcher ton script de marche.
Autre remarque : lors du premier appel, $age n'est pas défini et, sans ces apostrophes inutiles, tu aurais une erreur de script. Une erreur, qui en cache une autre…
Pour en venir au fait, peux-tu décrire en quoi consiste ton problème avec cette variable ? J'ai l'impression que tu voudrais que 'price' soit modifié en temps réel en fonction de l'année, sans valider le formulaire : si c'est l'effet recherché, c'est normal que ça ne marche pas, car ta variable PHP $age n'est remise à jour que quand tu envoies le formulaire.
Tu as des apostrophes inutiles autour de <?php echo $age; ?>, car age est un nombre et n'a pas à être écrit entre apostrophes.
Mais ça ne devrait pas empêcher ton script de marche.
Autre remarque : lors du premier appel, $age n'est pas défini et, sans ces apostrophes inutiles, tu aurais une erreur de script. Une erreur, qui en cache une autre…
Pour en venir au fait, peux-tu décrire en quoi consiste ton problème avec cette variable ? J'ai l'impression que tu voudrais que 'price' soit modifié en temps réel en fonction de l'année, sans valider le formulaire : si c'est l'effet recherché, c'est normal que ça ne marche pas, car ta variable PHP $age n'est remise à jour que quand tu envoies le formulaire.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
12 déc. 2016 à 14:04
12 déc. 2016 à 14:04
Salut,
La variable $age n'est pas définie au premier chargement de la page.
Une solution pour corriger ce problème est d'afficher le script uniquement si la variable $age est définie :
Une autre solution est d'initialiser la variable javascript à 0 si la variable php n'existe pas et de modifier légèrement la condition js :
Bonne journée,
La variable $age n'est pas définie au premier chargement de la page.
Une solution pour corriger ce problème est d'afficher le script uniquement si la variable $age est définie :
<?php if (isset($age)) : ?> <script> var age='<?PHP echo $age;?>'; if(age >= 12) { document.getElementById('price').value = 32; } else { document.getElementById('price').value = 24; } </script> <?php endif; ?>
Une autre solution est d'initialiser la variable javascript à 0 si la variable php n'existe pas et de modifier légèrement la condition js :
var age='<?PHP echo isset($age) ? $age : 0; ?>'; if (age != 0) { if(age >= 12) { document.getElementById('price').value = 32; } else { document.getElementById('price').value = 24; } }
Bonne journée,
new-dev
Messages postés
17
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
6 février 2017
1
Modifié par new-dev le 12/12/2016 à 15:15
Modifié par new-dev le 12/12/2016 à 15:15
Merci ça marche. J'ai utiliser la première technique. Plus qu'une chose. J'ai rajouter une balise select avec 2 options
et dans mon code javascript :
Quand je coche l'option select "demijournee". Le tarif reste toujours à 20. J'ai essayé d'ajouter un attribut onchange à ma balise select et de l'appeler via une fonction en javascript, ça change rien.
Merci
<select id="type" name="selectname"> <option value="journee" id="journee"> Journée </option> <option value="demijournee" id="demijournee"> Demi-journée </option> </select>
et dans mon code javascript :
<?php if (isset($age)) : ?> <script> var age = <?PHP echo $age;?>; if (age >= 12 && (document.getElementById('type').value == "demijournee")) { document.getElementById('price').value = 10; } else { document.getElementById('price').value = 20; } </script> <?php endif; ?>
Quand je coche l'option select "demijournee". Le tarif reste toujours à 20. J'ai essayé d'ajouter un attribut onchange à ma balise select et de l'appeler via une fonction en javascript, ça change rien.
Merci
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
12 déc. 2016 à 16:39
12 déc. 2016 à 16:39
D'après ta condition, si la variable age est inférieur à 12 on passe directement au else sans tenir compte de la valeur.
Ne faudrait-il pas remplacer ton opérateur ET (&&) par un OU (||) ?
Ne faudrait-il pas remplacer ton opérateur ET (&&) par un OU (||) ?
new-dev
Messages postés
17
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
6 février 2017
1
>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
Modifié par new-dev le 12/12/2016 à 17:11
Modifié par new-dev le 12/12/2016 à 17:11
Non c'est bien un (&& Et). Je veux diviser le tarif par 2 si l'âge de l'utilisateur est supérieur à 12 ans et si seulement il a choisit l'option (demijournee), ça ne fonctionne pas. J'ai tout testé, si je mets un âge supérieur à 12 et que je sélectionne bien demi-journée, j'arrive toujours dans le else.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
12 déc. 2016 à 19:01
12 déc. 2016 à 19:01
Bonjour,
D'après ton code ... il s'exécute (UNIQUEMENT) au chargement de la page.;...
Pour actualiser le "price" en fonction du choix réalisé dans la balise SELECT ... tu dois le faire sur un ONCHANGE
par exemple :
Ensuite, pour l'appeller au chargement de ta page tu as juste à faire
et pour actualiser en fonction du choix réalisé dans la balise SELECT:
D'après ton code ... il s'exécute (UNIQUEMENT) au chargement de la page.;...
Pour actualiser le "price" en fonction du choix réalisé dans la balise SELECT ... tu dois le faire sur un ONCHANGE
par exemple :
function changePrice(){ var age = <?PHP echo $age;?>; var typeJour = document.getElementById('type').value; if (age >= 12 && typeJour == "demijournee)) { document.getElementById('price').value = 10; } else { document.getElementById('price').value = 20; } }
Ensuite, pour l'appeller au chargement de ta page tu as juste à faire
<script type="text/javascript"> changePrice(); </script>
et pour actualiser en fonction du choix réalisé dans la balise SELECT:
<select id="type" name="selectname" onchange="changePrice();"> <option value="journee" id="journee"> Journée </option> <option value="demijournee" id="demijournee"> Demi-journée </option> </select>
new-dev
Messages postés
17
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
6 février 2017
1
Modifié par new-dev le 12/12/2016 à 19:26
Modifié par new-dev le 12/12/2016 à 19:26
Bonjour,
J'avais essayer en mettant un attribut onchange, ça ne fonctionnait pas. J'ai essayer en mettant exactement ton code et je me retrouve avec 2 erreurs :
test2.php:12 Uncaught ReferenceError: changePrice is not defined(…)
test2.php:67 Uncaught SyntaxError: Invalid or unexpected token
Du coup je te remontre mon code en entier, je pense que ça sera mieux (sans ton code) :
Merci pour ton aide.
J'avais essayer en mettant un attribut onchange, ça ne fonctionnait pas. J'ai essayer en mettant exactement ton code et je me retrouve avec 2 erreurs :
test2.php:12 Uncaught ReferenceError: changePrice is not defined(…)
test2.php:67 Uncaught SyntaxError: Invalid or unexpected token
Du coup je te remontre mon code en entier, je pense que ça sera mieux (sans ton code) :
<!doctype html> <html> <head> <meta charset="utf-8"> </head> <body> <form name="my_form" method="post" action=""> <select id="type" name="selectname"> <option value="journee" id="journee"> Journée </option> <option value="demijournee" id="demijournee"> Demi-journée </option> </select> <br /> <br /> <select name="jour" id="jour"> <option> Jour </option> <?php for ($i = 1; $i <= 30; $i++) { echo '<option value=\'' . $i . '\'>' . $i . '</option>'; } ?> </select> <select name='mois' id="mois"> <option> Mois </option> <?php for ($i = 1; $i < 13; $i++) { echo '<option value=\'' . $i . '\'>' . $i . '</option>'; } ?> </select> <select name="annee" id="annee"> <option> Annee </option> <?php for ($i =1930; $i <= 2016; $i++) { echo'<option value=\'' . $i .'\'>' . $i . '</option>'; } ?> </select> <br /> <br /> <p> réduction <input type="checkbox" id="reduction" /> </p> <input type="submit" id="submit" name="submit"/> <br /> <br /> <input id="price" /> </form> <hr> <?php if (isset($_POST['annee'])) { $jour = $_POST['jour']; $mois = $_POST['mois']; $annee = $_POST['annee']; if (!empty($jour) && !empty($mois) && !empty($annee)) { $date = explode('/', date('d/m/Y')); print_r($date); if (($mois < $date[1]) || (($mois == $date[1] && $jour <= $date[0]))) { $age = $date[2] - $annee; echo 'vous avez ' .$age. ' ans'; } if (($mois > $date[1]) || (($mois == $date[1] && $jour > $date[0]))) { $age = $date[2] - $annee -1; echo 'vous avez ' .$age. ' ans'; } } else { print_r($date); $age = $date[2] - $annee - 1; } } ?> <?php if (isset($age)) : ?> <script> var age = <?PHP echo $age;?>; if (age >= 12 && (document.getElementById('type').value== "demijournee")) { document.getElementById('price').value = 10; } else { document.getElementById('price').value = 20; } </script> <?php endif; ?> </body> </html>
Merci pour ton aide.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
new-dev
Messages postés
17
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
6 février 2017
13 déc. 2016 à 10:15
13 déc. 2016 à 10:15
Du coup je te remontre mon code en entier, je pense que ça sera mieux (sans ton code) :
Oui... sans mon code ... je pourrais donc te refaire le code correctement....
mais je préfèrerai voir plutôt ce que TOI tu as mal fait pour te le corriger.
Donc montre nous le code AVEC mes modifs.