Forum de discussion
Forum « Programmation Javascript » (archives)
Re: serieux probleme !!!
Envoyé: 3 juin 2004, 8h24 par Oznog
AVANT TOUT, PREND LE TEMPS DE DONNER UN TITRE (sujet) SIGNIFICATIF SINON JE DÉTRUIT LE MESSAGE.
Bien sûr, un guillemet est un caractèrer réservé pour délimiter une chaîne de caractère mais en même temps un simple caractère.
Alors pour éviter ce problème on a inventé un symbole pour éviter d'interpréter un caractère spécial. On parle de "escape".
Dans la plupart des langages issu du C comme le Javascript c'est la barre oblique (\).
Donc dans ton cas tu as une chaîne de caractère qui contient une instruction qui contient elle même des chaînes de caractères. Il faut tout simplement oublier l'instruction, c'est comme si c'était du texte brut sans plus pour le moteur Javascript :
document.write("<a href='#' onClick='return show('toto','toto');'></a>");
Donc à première vue ton code est bon puisque les délimitateur sont les doubles guillemets.
Par contre le code Javascript ainsi généré est lui problématiquem mais on vient d'isoler le problème qui est maintenant simplement :
onClick='return show('toto','toto');'
On voit très bien le conflit, tu peux faire alors :
onClick='return show(\'toto',\'toto');'
MAIS ATTENTION, le résultat sera toujours une fois généré dans la page :
onClick='return show('toto','toto');'
Causant toujours le même problème. C'est qu'en fait il y a 3 imbrications, c'est le "onclick" HTML qui doit être "escappé". D'ailleurs en HTML et particulièrement en XHTML, tu ne devrais jamais utiliser le simple guillemet!
Fais-tu <a href='mapage.htm'> ???
Non tu fais probablement <a href="mapage.htm"> alors pourquoi onClick='return...' ??
Le bon code devrait être :
document.write("<a href='#' onClick="return show('toto','toto');"></a>");
Mais là tu as un problème avec la génération du code, un conflit de doubleguillemets. C'est donc lui et non pas les simple que tu dois "escappé".
Code complet
document.write("<a href='#' onClick=\"return show('toto','toto');\"></a>");
Ciao
Oznog
Réponses
|