Probleme avec eval()
Résolu
tfloyd
-
<script type="text/javascript" alert(bonjour) </script> -
<script type="text/javascript" alert(bonjour) </script> -
Salut à tous!
Voilà je m'en remet à vous, j'ai pourtant chercher de longues heures durant mais impossible de trouver la solution (je suis pas très fort en javascript).
Alors voilà mon petit script pour commencer :
function change_prix()
{
elem = document.getElementById("aff_prix");
prix_name="prix_"+document.form.list_taille.value+"";
elem.innerHTML="<b>"+document.form.eval(prix_name).value+" </b>";
}
En fait je récupère une valeure cachée en fonction de mon choix dans un menu déroulant.
-elem correspond au texte que je vais modifier.
-prix_name est le nom du champ caché dont je veux récupérer la valeur (en fonction du choix du menu déroulant donc)
-la dernière ligne se charge de remplacer un texte par la valeur de mon champ caché
Problème ! Cela ne marche que sous Firefox. Aucun résultat sous IE, Opera ou Safari ! C'est au niveau du eval() que cela semble bugger.
SVP Auriez vous une solution?? Je ne vois pas du tout !
Voilà je m'en remet à vous, j'ai pourtant chercher de longues heures durant mais impossible de trouver la solution (je suis pas très fort en javascript).
Alors voilà mon petit script pour commencer :
function change_prix()
{
elem = document.getElementById("aff_prix");
prix_name="prix_"+document.form.list_taille.value+"";
elem.innerHTML="<b>"+document.form.eval(prix_name).value+" </b>";
}
En fait je récupère une valeure cachée en fonction de mon choix dans un menu déroulant.
-elem correspond au texte que je vais modifier.
-prix_name est le nom du champ caché dont je veux récupérer la valeur (en fonction du choix du menu déroulant donc)
-la dernière ligne se charge de remplacer un texte par la valeur de mon champ caché
Problème ! Cela ne marche que sous Firefox. Aucun résultat sous IE, Opera ou Safari ! C'est au niveau du eval() que cela semble bugger.
SVP Auriez vous une solution?? Je ne vois pas du tout !
1 réponse
Bonjour a toi tfloyd,
Je ne prétend pas m'y connaitre a fond mais pourquoi n'essaie tu pas tout simplement de faire:
Et si non si tu cherche vraiment a utiliser eval() vue que je ne sais pas ton but final tu peut aussi tester:
Apres je te propose d'aller tester tout ton code ici: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_eval
Je ne prétend pas m'y connaitre a fond mais pourquoi n'essaie tu pas tout simplement de faire:
elem.innerHTML="<b>" + prix_name + " </b>";
Et si non si tu cherche vraiment a utiliser eval() vue que je ne sais pas ton but final tu peut aussi tester:
elem.innerHTML="<b>" + eval(prix_name) + " </b>";
Apres je te propose d'aller tester tout ton code ici: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_eval
En fait je ne peux écrire ni :
elem.innerHTML="<b>" + prix_name + " </b>";
ni :
elem.innerHTML="<b>" + eval(prix_name) + " </b>";
car j'ai besoin au final de remplacer un texte par celui contenu dans un champ caché (je ne sais pas si c'est la meilleure méthode) donc je dois récupérer la valeur de ce champ caché donc avec : document.form.eval(prix_name).value
Beaucoup de réflection pour une ligne de code en plus, enfin le principal c'est que cela marche lol
Voici ma solution pour ceux que ca intéresserait :
function change_prix()
{
elem = document.getElementById("aff_prix");
prix_name="prix_"+document.form.list_taille.value;
dd=document.getElementById(prix_name).value;
elem.innerHTML="<b>"+dd+" €</b>";
}
J'ai supprimé le eval() en passant par une étape intermédiaire grace au "getElementById".
Donc si je comprend bien tu a un text "par defaut" que tu voudrais mettre a la place d'un autre. Ce text "par defaut", l'as-tu dans une variable? Et comment compte tu indiquer quand remplacer (avec un bouton de validation)?
Si oui et oui :) tu ne devrais pas avoir de probleme pour recuperer facilement la valeur d'une variable.
Exemple:
<html> <body> <script type="text/javascript"> function fonctiontest() { var truc = document.forms["form1"].TextCache.value; var test = "<b>" + truc + "</b>"; document.write(test); } </script> <form name="form1" > <input name="TextCache" value="coucou"> <input type="button" value="click" onclick=fonctiontest()> </form> </body> </html>PS: sa ne sers a rien de faire le +""; tu peut simplement faire