Pb appel de fonction javascript innerhtml [Résolu]

Signaler
Messages postés
15
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
10 novembre 2010
-
Messages postés
15
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
10 novembre 2010
-
Bonjour,
Je vous explique :
J'ai créé une fonction qui affiche sur ma page avec la fonction innerhtml une div contenant des informations que l'utilisateur a saisi auparavant grâce à de l'ajax.
Dans cette div créé, il y a 2 boutons, correspondant chacun à une fonction javascript sous la forme nomfonction('param1, 'param2').
Le pb se situe dans IE (toutes versions) :
document.getElementById('tableau').innerHTML +=
'
...+ 
' 
[javascript:onclick=supprim(''+i+'',''+id_struct+'') Supprimer]...'


Pour firefox, il comprend les ' et les transforme en '.
mais IE ne comprend pas et sur le bouton j'ai uen fonction sous la forme :
supprim('i','id_struct')

Ce qui me génère alors des erreurs et bloquent les scripts exécutés après.

J'ai essayé d'inverser les ' et les " pour le
document.getElementById('tableau').innerHTML +="<div id='"+i+"'..."


Mais il ne comprend pas non plus.

Si vous avez déjà eu à faire à ce problème et avez trouver une solution, n'hésitez pas.

J'ai déjà un système de détection de browser mis en place pour d'autres scripts spécial IE, donc je pourrais p-e adapter quelque-chose.

Merci.

2 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
Bonjour,
il faut échapper les guillemets dans une chaine de caractères pour qu'ils soient pris en compte.
On échappe en mettant un anti-slash (\) devant, par exemple
<a href="javascript:onclick=supprim(\'" +i +" \', \'" +id_struct +"\')"

sur ce coup IE a raison.
d'une façon générale si la chaine commence par "
ALORS elle fini par "
, il semblerait que tu alternes, d'après ton code et je doute que FF l'accepte.
;O)
Messages postés
15
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
10 novembre 2010

Merci pour la réponse !
C'était bien un problème d'échappement en effet.