Probleme avec eval()

Résolu
tfloyd -  
 <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 !

1 réponse

TakeEasy Messages postés 7 Statut Membre
 
Bonjour a toi tfloyd,

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
0
tfloyd
 
Salut TakeEasy, j'ai testé ton lien et collé mon code cela marche encore sous Firefox mais malheureusement toujours pas sur les autres navigateurs.

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
0
tfloyd > tfloyd
 
Bon j'ai résolu mon problème !^^

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".
0
TakeEasy Messages postés 7 Statut Membre > tfloyd
 
Ok donc je vais essayer de faire le plus de réponses possible pour te faire trouver la bonne chose.

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:
prix_name="prix_"+document.form.list_taille.value+""; 
sa ne sers a rien de faire le +""; tu peut simplement faire
prix_name="prix_"+document.form.list_taille.value; 
0
&lt;script type=&quot;text/javascript&quot; alert(bonjour) &lt;/script&gt;
 
<script type="text/javascript" alert(bonjour) </script>
0