2010-10-21 9 views
0

Je fonction javascript:Comment passer de longue valeur à la fonction javascript

function someAction(thisTd,text){ 
    alert(text); 
    thisTd.innerHTML=text; 
    ... 
} 

Et fichier html:

<td onclick="someAction(this,<?echo 'Long-long text with <b>html-formatting</b>'?>)"/> 

Lorsque j'utilise uneAction cette fonction de code ne remet pas (car alerte doesn 't show) et dans la console d'erreur dans Opera aucune erreur ne s'affiche. Comment régler ce problème?
P.S. Je n'utilise pas de frameworks (JQuery etc.).
MISE À JOUR # 1
Lorsque j'utilise ce code:

<?$encoded=str_replace("\n","",str_replace("\r\n","",$text));echo $encoded?> 

Il fonctionne bien. Mais je ne suis pas sûr que cela fonctionne correctement sous Linux (j'utilise Windows)

Répondre

2

Assurez-vous que vous HTML encode et mettre des guillemets simples autour du paramètre:.

<td onclick="someAction(this, '<?echo htmlspecialchars('Long-long text with <b>html-formatting</b>', ENT_QUOTES) ?>')"/> 
0

Il suffit de mettre les guillemets autour de la texte, vous produisez:

Logiquement, cela donne une erreur.

Utilisez les guillemets simples ou échapper des guillemets doubles (\ ")

2

Vous devez remoce tag écho et la

<div onclick="someAction(this,'Long-long text with <b>html-formatting</b>')">myDiv</div> 

et votre fonction est:

function someAction(thisTd,text){ 
    thisTd.nodeValue=innerHTML 
    ... 
} 
+0

Le texte est un exemple. En fait, il devrait y avoir des variables. – dublicator

+0

vous pouvez faire someAction (thisTd, someVariable) et dans l'appel javascript votre script php – oyo

1

Vous devez envelopper la chaîne en guillemets simples ou html codés en premier lieu:

<td onclick="someAction(this, '<?php echo 'yada yada'; ?>');"/> 
<!-- OR --> 
<td onclick="someAction(this, &quot;<?php echo 'yada yada'; ?>&quot;);"/> 

Deuxièmement, la sortie "echo" ed peut contenir des guillemets simples ou doubles qui peuvent casser la chaîne javascript ou l'attribut html. En supposant que vous utilisez des guillemets simples pour envelopper la chaîne en écho:

<td onclick="someAction(this, '<?php echo htmlspecialchars(str_replace("'", "\\'", $that_long_text)); ?>');"/> 
+0

J'utilise un tel code: mais ça ne marche pas – dublicator

+0

Je ne vois pas de '?> 'dans le commentaire mais ça peut être une faute de frappe, mais je ne vois pas non plus la fermeture' " '. Si vous utilisez '" '(correctement encodé comme' " ') comme délimiteur de chaîne, vous devez remplacer tout' '' par '\" '; pas' '' par '' \ ''. –

+0

Oui, c'est une faute de frappe. Quand j'utilise ceci: onclick = "someAction (ceci, " ")" c'est donner un tel code: onclick = "someAction (ceci, "

sdf

sdfsdf

")" – dublicator

Questions connexes